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? …
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 …
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 …
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 …
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?
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 …
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; …
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, …
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 …
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 …
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 …
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, …
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 …
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 …
public class MyClass { public object Prop1 { get; set; } public object Prop2 { get; set; } public object Prop3 { get; set; } } Załóżmy, że mam obiektu myObjectz MyClassi muszę zresetować swoje właściwości, lepiej jest utworzyć nowy obiekt lub przypisać każdą właściwość? Załóżmy, że nie mam żadnego …
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.