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

7
Programowanie funkcjonalne w porównaniu do OOP z klasami
Ostatnio interesowałem się niektórymi koncepcjami programowania funkcjonalnego. Od jakiegoś czasu korzystam z OOP. Widzę, jak zbudowałbym dość złożoną aplikację w OOP. Każdy obiekt wiedziałby, jak to robić. Lub cokolwiek, co robi klasa rodziców. Mogę więc po prostu powiedzieć, Person().speak()żeby ta osoba mówiła. Ale jak zrobić podobne rzeczy w programowaniu funkcjonalnym? …

6
Czy można mieć zapach, jeśli kod pozwala łatwiej rozwiązać inny problem? [Zamknięte]
Grupa przyjaciół i ja pracowaliśmy od jakiegoś czasu nad projektem i chcieliśmy wymyślić przyjemny sposób OOP reprezentujący scenariusz specyficzny dla naszego produktu. Zasadniczo pracujemy nad grą w piekło w stylu Touhou i chcieliśmy stworzyć system, w którym moglibyśmy z łatwością reprezentować każde możliwe zachowanie kuli, jakie moglibyśmy wymarzyć. Tak właśnie …

18
Co byś zrobił, gdyby Twój klient nie wymagał programowania obiektowego?
Piszę program do symulacji aktywności mrówek w siatce (PDF). Mrówka może się przemieszczać, podnosić i upuszczać. Problem polega na tym, że działanie mrówek i położenia każdej mrówki można łatwo śledzić za pomocą atrybutów klasy (i możemy łatwo stworzyć wiele instancji takich mrówek), mój klient powiedział, że ponieważ ma doświadczenie w …

14
Dlaczego obiekty są przekazywane przez odniesienie?
Młody współpracownik, który studiował OO, zapytał mnie, dlaczego każdy przedmiot jest przekazywany przez referencję, co jest przeciwieństwem prymitywnych typów lub struktur. Jest to wspólna cecha języków takich jak Java i C #. Nie mogłem znaleźć dla niego dobrej odpowiedzi. Jakie są motywy tej decyzji projektowej? Czy programiści tych języków byli …

10
Czy generalnie wysyłasz obiekty lub ich zmienne składowe do funkcji?
Co jest ogólnie przyjętą praktyką między tymi dwoma przypadkami: function insertIntoDatabase(Account account, Otherthing thing) { database.insertMethod(account.getId(), thing.getId(), thing.getSomeValue()); } lub function insertIntoDatabase(long accountId, long thingId, double someValue) { database.insertMethod(accountId, thingId, someValue); } Innymi słowy, czy ogólnie lepiej jest przekazywać całe obiekty, czy tylko pola, których potrzebujesz?

5
Czy nadrzędne metody to zapach kodu?
Czy to prawda, że ​​nadrzędnymi konkretnymi metodami jest zapach kodu? Ponieważ uważam, że jeśli chcesz zastąpić konkretne metody: public class A{ public void a(){ } } public class B extends A{ @Override public void a(){ } } można go przepisać jako public interface A{ public void a(); } public class …

7
Czy ustawianie flagi w pętli w celu użycia jej później jest zapachem kodu?
Mam fragment kodu, w którym iteruję mapę, dopóki jakiś warunek nie jest spełniony, a następnie użyję tego warunku, aby zrobić więcej rzeczy. Przykład: Map<BigInteger, List<String>> map = handler.getMap(); if(map != null && !map.isEmpty()) { for (Map.Entry<BigInteger, List<String>> entry : map.entrySet()) { fillUpList(); if(list.size() > limit) { limitFlag = true; break; …

10
Biorąc pod uwagę stado koni, jak znaleźć średnią długość rogu wszystkich jednorożców?
Powyższe pytanie jest abstrakcyjnym przykładem typowego problemu, który napotykam w starszym kodzie, a ściślej - problemów wynikających z poprzednich prób rozwiązania tego problemu. Mogę wymyślić co najmniej jedną metodę platformy .NET, która ma rozwiązać ten problem, podobnie jak Enumerable.OfType<T>metoda. Ale fakt, że ostatecznie kończysz przesłuchiwanie typu obiektu w czasie wykonywania, …

10
Jak zwolennicy programowania funkcjonalnego odpowiedzieliby na to stwierdzenie w Code Complete?
Na stronie 839 drugiego wydania Steve McConnell omawia wszystkie sposoby, w jakie programiści mogą „pokonać złożoność” w dużych programach. Jego wskazówki kończą się tym stwierdzeniem: „Programowanie obiektowe zapewnia poziom abstrakcji, który dotyczy jednocześnie algorytmów i danych , rodzaj abstrakcji, której nie zapewnił sam rozkład funkcjonalny”. W połączeniu z konkluzją, że …

6
Zrozumienie „programowania do interfejsu”
Często spotykałem się z terminem „programowanie interfejsu zamiast implementacji” i myślę, że rozumiem, co to znaczy. Ale chcę się upewnić, że rozumiem, jakie są korzyści i możliwe wdrożenia. „Programowanie interfejsu” oznacza, że ​​tam, gdzie to możliwe, należy odwoływać się do bardziej abstrakcyjnego poziomu klasy (interfejs, klasa abstrakcyjna, a czasem do …

10
Interfejsy w klasie abstrakcyjnej
Mój współpracownik i ja mamy różne opinie na temat relacji między klasami podstawowymi a interfejsami. Jestem przekonany, że klasa nie powinna implementować interfejsu, chyba że z tej klasy można korzystać, gdy wymagana jest implementacja interfejsu. Innymi słowy, lubię widzieć taki kod: interface IFooWorker { void Work(); } abstract class BaseWorker …

3
Co oznacza „S” w OOPS?
Szukałem pełnej formy „ OOPS ” w Google , ale niestety istnieje wiele niejednoznacznych odpowiedzi. Niektórzy mówią, że to „ Systemy ”, a niektórzy twierdzą, że to „ Struktura ”, a niektórzy nawet wspominają o tym jako „ Streszczenie ”. Czy ktoś może mnie oświecić, aby znaleźć pełną formę OOPS, …

5
Kiedy i dlaczego używać klas zagnieżdżonych?
Korzystając z programowania obiektowego mamy moc tworzenia klasy wewnątrz klasy (klasa zagnieżdżona), ale nigdy nie tworzyłem zagnieżdżonej klasy w ciągu 4 lat doświadczenia w programowaniu. Do czego służą klasy zagnieżdżone? Wiem, że klasa może być oznaczona jako prywatna, jeśli jest zagnieżdżona i że możemy uzyskać dostęp do wszystkich prywatnych członków …

8
Czy dopuszczalne jest kopiowanie i wklejanie długiego, ale prostego kodu zamiast owijania go w klasę lub funkcję?
Załóżmy, że mam segment kodu do połączenia z Internetem i pokazania wyników takiego połączenia: HttpRequest* httpRequest=new HttpRequest(); httpRequest->setUrl("(some domain .com)"); httpRequest->setRequestType(HttpRequest::Type::POST); httpRequest->setRequestData("(something like name=?&age=30&...)"); httpRequest->setResponseCallback([=](HttpClient* client, HttpResponse* response){ string responseString=response->getResponseDataString(); if(response->getErrorCode()!=200){ if(response->getErrorCode()==404){ Alert* alert=new Alert(); alert->setFontSize(30); alert->setFontColor(255,255,255); alert->setPosition(Screen.MIDDLE); alert->show("Connection Error","Not Found"); }else if((some other different cases)){ (some other alert) }else …


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.