Programowanie obiektowe to paradygmat programowania wykorzystujący „obiekty”: struktury danych składające się z pól danych i metod wraz z ich interakcjami.
Wyobraź sobie, że mam tę klasę: public class Test { private String[] arr = new String[]{"1","2"}; public String[] getArr() { return arr; } } Teraz mam inną klasę, która używa powyższej klasy: Test test = new Test(); test.getArr()[0] ="some value!"; //!!! Oto więc problem: uzyskałem dostęp do prywatnego pola klasy …
Czytam książkę „Wyjątkowy C ++” Herba Suttera iw tej książce poznałem idiom pImpl. Zasadniczo chodzi o stworzenie struktury dla privateobiektów a classi dynamiczne przydzielanie ich, aby skrócić czas kompilacji (a także lepiej ukryć prywatne implementacje). Na przykład: class X { private: C c; D d; } ; można zmienić na: …
Jeśli mam następujący kod w Pythonie: class Foo(object): bar = 1 def bah(self): print(bar) f = Foo() f.bah() Narzeka NameError: global name 'bar' is not defined Jak mogę uzyskać dostęp do zmiennej klasy / statycznej barw metodzie bah?
Mam obiekt Pythona z kilkoma atrybutami i metodami. Chcę iterować po atrybutach obiektów. class my_python_obj(object): attr1='a' attr2='b' attr3='c' def method1(self, etc, etc): #Statements Chcę wygenerować słownik zawierający wszystkie atrybuty obiektów i ich bieżące wartości, ale chcę to zrobić w sposób dynamiczny (więc jeśli później dodam kolejny atrybut, nie muszę również …
Powiedzmy, że mam ten interfejs: public interface IBox { public void setSize(int size); public int getSize(); public int getArea(); //...and so on } Mam klasę, która to implementuje: public class Rectangle implements IBox { private int size; //Methods here } Gdybym chciał skorzystać z interfejsu IBox, nie mogę w rzeczywistości …
Większość języków głównego nurtu, w tym języki programowania obiektowego (OOP), takie jak C #, Visual Basic, C ++ i Java, zostały zaprojektowane przede wszystkim do obsługi programowania imperatywnego (proceduralnego), podczas gdy języki podobne do Haskell / gofer są czysto funkcjonalne. Czy ktoś może wyjaśnić, jaka jest różnica między tymi dwoma …
Jaki byłby zestaw sprytnych hacków preprocesora (kompatybilnych z ANSI C89 / ISO C90), które umożliwiają jakąś brzydką (ale użyteczną) orientację obiektową w C? Znam kilka różnych języków zorientowanych obiektowo, więc nie odpowiadaj na pytania typu „Naucz się C ++!”. Przeczytałem " Programowanie obiektowe z ANSI C " (uwaga: format PDF …
Spędziłem ostatnie kilka godzin próbując znaleźć rozwiązanie mojego problemu, ale wydaje się to beznadziejne. Zasadniczo muszę wiedzieć, jak wywołać metodę nadrzędną z klasy podrzędnej. Wszystkie rzeczy, które próbowałem do tej pory, kończą się albo nie działają, albo nadpisują metodę nadrzędną. Używam następującego kodu, aby skonfigurować OOP w javascript: // SET …
W C # (i wielu innych językach) dostęp do prywatnych pól innych wystąpień tego samego typu jest całkowicie uzasadniony. Na przykład: public class Foo { private bool aBool; public void DoBar(Foo anotherFoo) { if (anotherFoo.aBool) ... } } Ponieważ specyfikacja C # (sekcje 3.5.1, 3.5.2) stwierdza, że dostęp do pól …
Zamknięte . To pytanie musi być bardziej skoncentrowane . Obecnie nie przyjmuje odpowiedzi. Chcesz poprawić to pytanie? Zaktualizuj pytanie, aby skupiało się na jednym problemie, edytując ten post . Zamknięte 6 lat temu . Popraw to pytanie Nie wiem, jaka jest rzeczywista rola delegata? Pytanie to zadawano mi wielokrotnie w …
Tworzenie łańcuchów metod to praktyka metod obiektowych zwracających sam obiekt w celu wywołania wyniku dla innej metody. Lubię to: participant.addSchedule(events[1]).addSchedule(events[2]).setStatus('attending').save() Wydaje się, że jest to dobra praktyka, ponieważ tworzy czytelny kod lub „płynny interfejs”. Jednak wydaje mi się, że zamiast tego wydaje mi się, że łamie notację wywoływania obiektów wynikającą …
W obecnym stanie to pytanie nie pasuje do naszego formatu pytań i odpowiedzi. Oczekujemy, że odpowiedzi będą poparte faktami, referencjami lub ekspertyzą, ale to pytanie prawdopodobnie będzie wymagało debaty, argumentów, ankiet lub rozszerzonej dyskusji. Jeśli uważasz, że to pytanie można poprawić i prawdopodobnie ponownie otworzyć, odwiedź centrum pomocy, aby uzyskać …
Mam problemy ze zrozumieniem tego stwierdzenia low in coupling and high in cohesion. Przeszukałem go i dużo o tym czytałem, ale nadal trudno mi to zrozumieć. Rozumiem przez to High cohesion, że powinniśmy mieć klasy wyspecjalizowane do wykonywania określonej funkcji. Mam nadzieję, że to prawda? Podobnie jak klasa weryfikacji kart …
Przykład o czym mówię: class Person < ActiveRecord::Base def name=(name) super(name.capitalize) end def name super().downcase # not sure why you'd do this; this is just an example end end Wydaje się, że to działa, ale właśnie przeczytałem sekcję dotyczącą zastępowania metod atrybutów w dokumentacji ActiveRecord :: Base i sugeruje użycie …
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.