Pytania otagowane jako object-oriented

Metodologia umożliwiająca modelowanie systemu jako zestawu obiektów, które można kontrolować i manipulować w sposób modułowy

3
Czy są jakieś języki OO bez dziedziczenia?
Podczas dzisiejszego przeglądu kodu mój kolega powiedział coś interesującego: prototypeprzydaje się tylko wtedy, gdy potrzebujesz dziedziczenia - a kiedy dziedziczenie jest zawsze dobrym pomysłem ? Pomyślałem o tym i zdałem sobie sprawę, że zwykle używam dziedziczenia, aby obejść kod, który został źle zaprojektowany. Współczesny styl OO woli kompozycję niż dziedziczenie, …

7
Wzory do propagowania zmian w górę modelu obiektowego ..?
Oto typowy scenariusz, który zawsze frustruje mnie. Mam model obiektu z obiektem nadrzędnym. Element nadrzędny zawiera niektóre obiekty podrzędne. Coś takiego. public class Zoo { public List<Animal> Animals { get; set; } public bool IsDirty { get; set; } } Każdy obiekt podrzędny ma różne dane i metody public class …

9
Zasady OOP i nazwy metod
class Boxer: def punch(self, punching_bag, strength): punching_bag.punch(strength) class PunchingBag: def punch(self, strength): print "Punching bag punched with strength", strength boxer = Boxer() punching_bag = PunchingBag() boxer.punch(punching_bag, 2) Bez wątpienia punchto dobra nazwa metody w przypadku boksera. Ale czy nazwa punchnadaje się również do metody wbijania worka? W obu przypadkach mam …

6
Czy obiekt powinien znać swój identyfikator?
obj.idwydaje się dość powszechny i ​​również mieści się w zakresie czegoś, co obiekt może wiedzieć o sobie. Zastanawiam się, dlaczego mój obiekt powinien znać swój identyfikator? Wydaje się, że nie ma powodu, aby to mieć? Jednym z głównych powodów jego istnienia jest jej odzyskanie, więc moje repozytoria muszą to wiedzieć, …


6
Czy luźne sprzęgło bez skrzynek nie stanowi wzoru?
Luźne sprzężenie jest dla niektórych deweloperów świętym graalem dobrze zaprojektowanego oprogramowania. Z pewnością dobrą rzeczą jest uelastycznienie kodu w obliczu zmian, które mogą nastąpić w dającej się przewidzieć przyszłości, lub uniknięcie powielania kodu. Z drugiej strony wysiłki na rzecz luźnego łączenia komponentów zwiększają stopień pośredniości w programie, zwiększając w ten …

3
Jak obsługiwać przypadki awarii w konstruktorze klasy C ++?
Mam klasę CPP, której konstruktor wykonuje pewne operacje. Niektóre z tych operacji mogą się nie powieść. Wiem, że konstruktorzy nic nie zwracają. Moje pytania są Czy wolno wykonywać inne operacje niż inicjowanie elementów w konstruktorze? Czy można powiedzieć funkcji wywołującej, że niektóre operacje w konstruktorze nie powiodły się? Czy mogę …

4
„Zbyt obiektowo”
Pochodzę z silnego zaplecza OO, a ostatnio zacząłem pracować w organizacji, która choć kod jest napisany w Javie, ma o wiele mniejszy nacisk na dobry projekt OO niż to, do czego jestem przyzwyczajony. Powiedziano mi, że wprowadzam „zbyt dużo abstrakcji” i że zamiast tego powinienem kodować tak, jak zawsze to …


5
Używanie klas statycznych jako przestrzeni nazw
To pytanie zostało przeniesione z przepełnienia stosu, ponieważ można na nie odpowiedzieć w programie Software Engineering Stack Exchange. Migrował 8 lat temu . Widziałem innych programistów używających klas statycznych jako przestrzeni nazw public static class CategoryA { public class Item1 { public void DoSomething() { } } public class Item2 …

12
Czy tworzenie gier to najlepszy sposób na naukę programowania? [Zamknięte]
Zamknięte. To pytanie jest nie na temat . Obecnie nie przyjmuje odpowiedzi. Chcesz poprawić to pytanie? Zaktualizuj pytanie, aby było tematem dotyczącym wymiany stosów inżynierii oprogramowania. Zamknięte 4 lata temu . Niedawno usłyszałem instruktora, że ​​tworzenie gier było najlepszym sposobem na naukę programowania. Poza tym, że wszystko musiało zostać utworzone …

4
Jak radykalnie poprawić zasięg kodu?
Zadanie polega na poddaniu starszej aplikacji testowi jednostkowemu. Najpierw podstawowe informacje o aplikacji: jest to baza kodów RCP Java LOC o wielkości 600 000 LOC z tymi głównymi problemami masowe powielanie kodu bez enkapsulacji, większość danych prywatnych jest dostępna z zewnątrz, niektóre dane biznesowe również stały się singletonami, więc można …

5
Czy przypadki szczególne z awariami naruszają zasadę substytucji Liskowa?
Załóżmy, że mam interfejs FooInterfacez następującą sygnaturą: interface FooInterface { public function doSomething(SomethingInterface something); } I konkretna klasa, ConcreteFooktóra implementuje ten interfejs: class ConcreteFoo implements FooInterface { public function doSomething(SomethingInterface something) { } } Chciałbym ConcreteFoo::doSomething()zrobić coś wyjątkowego, jeśli przejdzie on przez specjalny typ SomethingInterfaceobiektu (powiedzmy, że się nazywa SpecialSomething). …

3
Ogólny czy wspólny interfejs?
Nie pamiętam, kiedy ostatni raz pisałem lekcje ogólne. Za każdym razem, gdy wydaje mi się, że potrzebuję go po pewnym namyśle, wyciągam wniosek, że nie. Druga odpowiedź na to pytanie sprawiła, że ​​poprosiłem o wyjaśnienia (ponieważ nie mogę jeszcze komentować, zadałem nowe pytanie). Weźmy więc podany kod jako przykład przypadku, …

5
Jakie są zalety wstrzykiwania zależności w przypadkach, gdy prawie wszyscy potrzebują dostępu do wspólnej struktury danych?
Istnieje wiele powodów, dla których globale są złe w OOP. Jeśli liczba lub rozmiar obiektów wymagających współdzielenia jest zbyt duża, aby można je było efektywnie przekazać w parametrach funkcji, zwykle wszyscy zalecają Wstrzykiwanie zależności zamiast obiektu globalnego. Jednak w przypadku, gdy prawie wszyscy muszą wiedzieć o pewnej strukturze danych, dlaczego …

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.