Załóżmy, że mam niestandardowy obiekt, Student : public class Student{ public int _id; public String name; public int age; public float score; } Oraz klasa Window , która służy do wyświetlania informacji o Uczniu : public class Window{ public void showInfo(Student student); } Wygląda całkiem normalnie, ale stwierdziłem, że Window …
Ten blog został opublikowany w Hacker News z kilkoma pozytywnymi opiniami. Pochodząc z C ++, większość tych przykładów wydaje się sprzeczna z tym, czego mnie nauczono. Tak jak w przykładzie 2: Zły: def check_for_overheating(system_monitor) if system_monitor.temperature > 100 system_monitor.sound_alarms end end kontra dobry: system_monitor.check_for_overheating class SystemMonitor def check_for_overheating if temperature …
Próbuję zrozumieć SOLIDNE zasady OOP i doszedłem do wniosku, że LSP i OCP mają pewne podobieństwa (jeśli nie powiedzieć więcej). zasada otwarta / zamknięta stwierdza: „jednostki oprogramowania (klasy, moduły, funkcje itp.) powinny być otwarte na rozszerzenie, ale zamknięte na modyfikację”. LSP w prostych słowach stwierdza, że dowolną instancję Foomożna zastąpić …
To pytanie jest subiektywne, ale byłem ciekawy, jak podchodzi do tego większość programistów. Poniższy przykład jest w pseudo-C #, ale powinno to również dotyczyć języków Java, C ++ i innych języków OOP. W każdym razie, pisząc metody pomocnicze w moich klasach, mam tendencję do deklarowania ich jako statycznych i po …
Kiedy po raz pierwszy zacząłem programować Javascript po tym, jak przede wszystkim miałem do czynienia z OOP w kontekście języków opartych na klasach, byłem zdezorientowany, dlaczego OOP oparte na prototypach byłoby kiedykolwiek preferowane od OOP opartego na klasach. Jakie są strukturalne zalety używania OOP opartego na prototypach, jeśli takie istnieją? …
Czytałem Wczesną historię Smalltalk i jest kilka wzmianek o „zadaniu”, które każą mi podważyć moje rozumienie jego znaczenia: Chociaż OOP pochodzi z wielu motywacji, dwie były kluczowe. Na dużą skalę należało znaleźć lepszy schemat modułów dla złożonych systemów obejmujących ukrywanie szczegółów, a na małą skalę - znaleźć bardziej elastyczną wersję …
W poście na blogu na F # dla zabawy i zysku napisano: W funkcjonalnym projekcie bardzo ważne jest oddzielenie zachowania od danych. Typy danych są proste i „głupie”. A następnie osobno masz wiele funkcji, które działają na te typy danych. Jest to dokładne przeciwieństwo projektowania obiektowego, w którym zachowanie i …
Wiem, że mogę zgłosić wyjątek od konstruktora w PHP, ale czy powinienem to zrobić? Na przykład, jeśli wartość parametru nie jest taka, jak się spodziewałem. A może powinienem odłożyć zgłoszenie wyjątku do momentu wywołania metody Jakie są zalety i wady w obu przypadkach?
OK, więc tytuł to trochę clickbaity, ale tak na serio, jestem na dobrej drodze , nie proś przez chwilę kick. Podoba mi się, jak zachęca metody do używania jako wiadomości w sposób zorientowany obiektowo. Ale to ma dokuczliwy problem, który grzechotał mi w głowie. Zacząłem podejrzewać, że dobrze napisany kod …
Wciągnąłem interesujący internetowy spór o metody pobierające i ustawiające oraz enkapsulację. Ktoś powiedział, że wszystko, co powinni zrobić, to przypisanie (ustawiające) lub dostęp zmienny (pobierające), aby utrzymać je w czystości i zapewnić enkapsulację. Czy mam rację, że całkowicie zniweczyłoby to cel posiadania getterów i seterów, a walidacja i inna logika …
Gdy struktura danych (na przykład kolejka) jest implementowana przy użyciu języka OOP, niektórzy członkowie struktury danych muszą być prywatni (na przykład liczba elementów w kolejce). Kolejka może być również zaimplementowana w języku proceduralnym przy użyciu structzestawu funkcji działających w systemie struct. Jednak w języku proceduralnym nie można uczynić członków structprywatnymi. …
Najwyżej oceniana odpowiedź na to pytanie dotyczące zasady substytucji Liskowa stara się rozróżnić pojęcia podtyp i podklasa . Wskazuje również, że niektóre języki łączą oba języki, podczas gdy inne nie. W przypadku języków obiektowych, które znam najbardziej (Python, C ++), „typ” i „klasa” są pojęciami synonimicznymi. Jeśli chodzi o C …
Aby obsłużyć kilka możliwych błędów, które nie powinny powstrzymywać wykonywania, mam errorzmienną, którą klienci mogą sprawdzać i używać do zgłaszania wyjątków. Czy to jest anty-wzór? Czy istnieje lepszy sposób, aby sobie z tym poradzić? Na przykład w akcji możesz zobaczyć API mysqli PHP . Załóżmy, że problemy z widocznością (akcesory, …
To może, ale nie musi być głupie pytanie, ale naprawdę chciałbym poznać odpowiedź na coś, co mnie niepokoi od dłuższego czasu. Dość często widzę przykłady / konwencje programowania, w których programiści utworzyli katalog, w którym acmemożna umieścić różne rzeczy. Co Acmeznaczy Dlaczego Acme, a nie Emca czy inny? Czy Acme …
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.