Jedną z zasad OOP, na które natrafiłem, jest: -Ekapsuluj, co się różni. Rozumiem, czym jest dosłowne znaczenie tego wyrażenia, tzn. Ukryj to, co się różni. Nie wiem jednak, jak dokładnie przyczyniłoby się to do lepszego projektu. Czy ktoś może to wyjaśnić na dobrym przykładzie?
Czy dobrą praktyką jest zastępowanie stałych używanych poza klasami przez metody pobierające? Na przykład, czy lepiej jest użyć if User.getRole().getCode() == Role.CODE_ADMINlub if User.getRole().isCodeAdmin()? Doprowadziłoby to do tej klasy: class Role { constant CODE_ADMIN = "admin" constant CODE_USER = "user" private code getRoleCode() { return Role.code } isCodeAdmin () { …
Bardzo często wpadam w sytuację, w której potrzebuję innego zachowania komponentu, które zależy od konkretnego rodzaju innego interfejsu. Aby zilustrować moje pytanie, napisałem mały fragment kodu, który pokaże, co mam na myśli. W tym przykładzie próbuję utworzyć obiekt żywnościowy z obiektu zwierzęcego. interface Animal { void growl(); String getAnimalType(); //"DOG" …
Mam klasę z dwoma readonly intpolami. Są eksponowane jako właściwości: public class Thing { private readonly int _foo, _bar; /// <summary> I AM IMMUTABLE. </summary> public Thing(int foo, int bar) { _foo = foo; _bar = bar; } public int Foo { get { return _foo; } set { } …
Tworzę model obiektowy dla urządzenia, które ma wiele kanałów. Rzeczowniki używane między klientem a mną to Channeli ChannelSet. („Zestaw” nie jest semantycznie dokładny, ponieważ jest uporządkowany, a prawidłowy zestaw nie. Ale to problem na inny czas.) Używam C #. Oto przykład użycia ChannelSet: // load a 5-channel ChannelSet ChannelSet channels …
Poniżej znajduje się pseudo kod, próbowałem go w Javie i PHP i oba działały: class Test { private int a = 5; public static function do_test(){ var t = new Test(); t.a = 1; print t.a // 1 } } Test::do_test(); Dlaczego możesz to zrobić w paradygmacie OOP i jaki …
Zamknięte . To pytanie musi być bardziej skoncentrowane . Obecnie nie przyjmuje odpowiedzi. Chcesz poprawić to pytanie? Zaktualizuj pytanie, aby skupiało się tylko na jednym problemie, edytując ten post . Zamknięte 5 lat temu . Jakiś czas temu zadałem pytanie na temat SO napisane w C ++, ale zamiast uzyskać …
Moje pytanie dotyczy klas System.ini System.outklas (mogą istnieć inne, takie jak te w bibliotece Standard). Dlaczego? Czy to nie jest zła praktyka w OOP? Nie należy go używać jako: System.getIn()i System.getOut()? Zawsze miałem to pytanie i mam nadzieję, że znajdę tutaj dobrą odpowiedź.
Mam interfejs, który ma pewną liczbę dobrze zdefiniowanych funkcji. Powiedzmy: interface BakeryInterface { public function createCookies(); public function createIceCream(); } Działa to dobrze w przypadku większości implementacji interfejsu, ale w kilku przypadkach muszę dodać nową funkcjonalność (np. Być może wprowadzoną do nowej metody createBrownies()). Oczywistym / naiwnym podejściem do tego …
Zamknięte . To pytanie musi być bardziej skoncentrowane . Obecnie nie przyjmuje odpowiedzi. Chcesz poprawić to pytanie? Zaktualizuj pytanie, aby skupiało się tylko na jednym problemie, edytując ten post . Zamknięte 4 lata temu . Zablokowana . To pytanie i odpowiedzi są zablokowane, ponieważ pytanie jest nie na temat, ale …
Jak już wyjaśniłem, zasada otwarta / zamknięta stwierdza, że raz napisanego kodu nie należy modyfikować (oprócz poprawek błędów). Ale jeśli moje reguły biznesowe ulegną zmianie, czy nie powinienem modyfikować kodu wdrażającego te zmiany? Podejrzewam, że nie rozumiem czegoś na temat zasady, ponieważ nie ma to dla mnie sensu.
Mam klasę o nazwie, Headingktóra robi kilka rzeczy, ale powinna również być w stanie zwrócić przeciwieństwo bieżącej wartości nagłówka, która w końcu musi zostać użyta poprzez utworzenie nowej instancji Headingsamej klasy. Mogę mieć prostą właściwość wywoływaną w reciprocalcelu zwrócenia przeciwnego nagłówka bieżącej wartości, a następnie ręcznie utworzyć nową instancję klasy …
Mam duży przedmiot: class BigObject{ public int Id {get;set;} public string FieldA {get;set;} // ... public string FieldZ {get;set;} } oraz specjalistyczny obiekt podobny do DTO: class SmallObject{ public int Id {get;set;} public EnumType Type {get;set;} public string FieldC {get;set;} public string FieldN {get;set;} } Osobiście uważam koncepcję jawnego przeniesienia …
Walczyłem z problemem w projekcie Java dotyczącym referencji cyklicznych. Próbuję modelować rzeczywistą sytuację, w której wydaje się, że przedmiotowe obiekty są od siebie zależne i muszą się o sobie wiedzieć. Projekt jest ogólnym modelem gry planszowej. Podstawowe klasy są niespecyficzne, ale zostały rozszerzone o specyfikę szachów, backgammon i innych gier. …
Używamy plików cookie i innych technologii śledzenia w celu poprawy komfortu przeglądania naszej witryny, aby wyświetlać spersonalizowane treści i ukierunkowane reklamy, analizować ruch w naszej witrynie, i zrozumieć, skąd pochodzą nasi goście.
Kontynuując, wyrażasz zgodę na korzystanie z plików cookie i innych technologii śledzenia oraz potwierdzasz, że masz co najmniej 16 lat lub zgodę rodzica lub opiekuna.