Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 602 Pomógł: 30 Dołączył: 1.08.2007 Skąd: Nowy Sącz Ostrzeżenie: (0%)
|
Witam
dziś szukając informacji o abstrakcji obiektów natchnołem się na ten artykuł http://blog.dywicki.pl/2007/04/04/o-abstra...-i-interfejsow/ Zrozumiałem tyle: Abstrakcja -Wymusza tworzenie obiektów w klasach pochodnych -Przekazuje informacje o działającym skrypcie Interfejs -Wymusza użycie metod w klasach impletujących go -Przekazuje nadzędzia działającego systemu Używamy Klasę abstrakcyjną gdy: -Mamy mniejszy system -Musimy zawrzeć w funkcji która będzie wymuszona jakiś kod -Chcemy używać niektórych z jej metod Interfejs gdy: -Mamy wielki system -Wymuszamy użycie metod w których nie musimy zawierać kodu -Definiujemy medtody które zainicjujemy w klasach impletujących interfejs Nie zrozumiałem: -Co to jest Elastyczność obiektu -"Budowa złożonej aplikacji bez użycia interfejsów jest posunięciem wysoce nierozsądnym, ponieważ to właśnie dzięki nim, nawet w językach kompilowanych ze statycznym typowaniem jesteśmy w stanie zyskać nadzwyczajnie elastyczny kod" -"Nawet jeśli koncepcja implementacji obróci się o 180 stopni to nasz interfejs, będący swoistą fasadą, ukryje te zmiany przed osobami, których one nie dotyczą bądź nie interesują." Dziękuje z góry oraz proszę o wyrozumiałośc ale jeśli mi ktoś nie wytłumaczy nie pojmę niczego tego do końca. Ten post edytował daniel1302 17.08.2008, 09:26:03 |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 6 476 Pomógł: 1306 Dołączył: 6.08.2006 Skąd: Kraków Ostrzeżenie: (0%)
|
W PHP taka konstrukcja oznacza, że parametr $zmienna musi: 1) Obiektem klasy NAZWA 2) Obiektem, któego klasa dziedziczy po NAZWA 3) Obiektem, którego klasa implementuje interfejs NAZWA (dodatkowo takie wymusznie typu możesz zostosować jeszcze do tablic (array). I niestety tylko tyle) Co do interefejsów: Wyobraź sobie, że masz obok siebie cztery telewizory. Każdy z nich ma pięć przycisków: 1) Power (off/on) 2) Zwiększ głośność 3) Zmniejsz głośność 4) Kanał w górę 5) Kanał w dół Gdy chcesz włączyć którykolwiek z tych telewizorów wykonujesz następującą akację: wciskasz przycisk power. I z Twojej strony to już jest koniec operacji. Teraz wewnątrz telewizora jego elektornika włącza wyświetlacz (zwróć uwagę, że Ciebie to już nie interesuje czy to jest kineskop, ekran LCD czy plazma), głośniki (ponownie nie interesuje Cie czy to jest jeden głośnik mono czy stereo czy może telewizor korzysta z zewnętrznego układu głośników) itp. Jeszcze jeden przykład: Jakiego byś telewizoru nie kupił będziesz potrafił korzystać z jego podstawowych opcji na pilocie (5 punktów powyżej). Dlaczego? Ponieważ jest tam powtórzony pewien schemat, jednolity interfejs. Oczywiście pilot może oferować dużo większe możliwości (takie, których inne nie oferują) ale te, które są zapisane w interfejscie wykonuje dokładnie tak samo jak inne piloty. A więc interfejs ujednolica dostęp do określonych zachowań (w OOP można by przyjąć, że w polach przechowujemy stany obiektu (np. telewizor: włączony/wyłączony, glośność 80, 70, 100, kontrast: 75, 22) a w metodach mamy "zachowania" (zmiejsz/zwiększ kontrast, włącz/wyłącz)) Co do klas/metod abstrakcyjnych. One pozwalają na to by pewne zachowania były wspólne dla różnych obiektów. Dzięki temu, że raz zapiszemy pewne zachowanie w klasie abstrakcyjnej (którą dziedziczy klasa dziecko) nie musimy pisać tego samego kodu 5 razy. Ponownie przykład telewizorów:
Klasy abstrakcyjne pozwalają nam (programiście, nie uzytkownikowi (warto zaznaczyć, że programista jest czasami użytkownikiem)) zaimplementować pewne powatarzale zachowania. |
|
|
|
daniel1302 O abstrakcji klas i interfejsów 17.08.2008, 08:12:04
Cysiaczek Chodzi o to, aby zmiana implementacji jakiej... 17.08.2008, 13:55:35
daniel1302 Czyli elastyczność to zastosowanie interfejsów/ kl... 17.08.2008, 16:08:05
Cysiaczek Nie do końca. W pewnym stopniu tak, ale tu chodzi ... 17.08.2008, 16:16:25
daniel1302 Czyli Elastyczność to jest:
Ktośu... 17.08.2008, 16:25:44
Cysiaczek To jest interfejs i wtedy masz rację. Zapewnia on ... 17.08.2008, 16:38:01
daniel1302 [PHP] pobierz, plaintext <?phpInterface Validat... 17.08.2008, 18:25:47
daniel1302 Dziękuje rozjaśniło mi się Pozdrowienia dla dwóch ... 18.08.2008, 05:27:43 ![]() ![]() |
|
Aktualny czas: 28.12.2025 - 13:03 |