Object-Oriented Programming (PLO): polimorfizm

Programowanie to proces opracowywania rozwiązań dla "żywych", dynamicznych zadań w postaci sztywnych struktur kodu, danych, funkcji i algorytmów. Procedura tworzenia ścisłej składni z niepewną semantyką. Prawdziwym zadaniem jest znany duży problem w sensie algorytmizacji: aby osiągnąć pożądane rozwiązanie, zadanie musi być umieszczone w precyzyjnych konstrukcjach syntaktycznych.

OWP podjęła dwukrotnie próbę "przełamania" tej długiej koncepcji programowania, ale "kajdany" klasycznego stylu kodowania danych i algorytmów są nadal silne.

Poziom i kwalifikacja

Obudowa komputera rozpoczęła się od obliczeń, ale szybkość, z jaką przyspiesza ruch w dziedzinie przetwarzania informacji, nie jest jeszcze wystarczająco duża, aby klasyczne programowanie stało się niemożliwe i przestało istnieć.


Obiektywnie i fakt, że deweloper nie nalega, a klient nie wymaga rzeczywistego rozwiązania rzeczywistych problemów. Obie strony są przyzwyczajone do ograniczania się do dostępnych narzędzi i nawyków. Formy polimorfizmu OOP, idea enkapsulacji kodu i dziedziczenie właściwości (metod) leżą w obszarze programowania, ale nie w obszarze problemu, który ma być rozwiązany. Przykładem jest biblioteka PHPOffice /PHPWord. Aby go użyć wymaga kwalifikacji programisty, trzeba stworzyć własny system obiektów, ale aktualny poziom klienta (wymagania klienta) - trywialna kompozycja, którą programista pokrywa się z jej rozwojem (w przeciwnym razie nie spełnia wymagań). Taka sytuacja:
BW tym przypadku korzystania z biblioteki problem formatowania dokumentów, na przykład dyplom lub dysertacja, powinien być zaprojektowany zgodnie ze standardem. Klient przedstawił swoje wymagania, a programista poszedł o wiele dalej.


Pełna analiza dokumentu, jego gromadzenie we właściwym formacie, praca z tabelami o dowolnym poziomie zagnieżdżania, scalania i dzielenia komórek, drukowanie w dowolnym kierunku itd.

Polimorfizm i OOP

Lepszą definicją polimorfizmu nie jest myślenie o tym, w jaki sposób można polegać na historii rozwoju idei programowania obiektowego, tak popularnego w dzisiejszych czasach, tak powszechnie używanego, ale niezrealizowanego w swojej istocie do dnia dzisiejszego. Każdy autor ma własną koncepcję początku i natury OOP. Dla każdego uważnego czytelnika ta koncepcja jest wiarygodna i obiektywna. Ale do dziś wszyscy akceptują jako bezwarunkowy aksjomat tylko trzy pozycje:
  • enkapsulacja;
  • polimorfizm;
  • dziedziczenie.
  • Niektórzy dodają: abstrakcja, a przede wszystkim to, a nawet główny punkt, służy jako podstawa do opisu natury OOP.
    W związku z tym poglądy OWP są polimorficzne: opisują jedną, konstruują inaczej lub odwrotnie, opisują inną, ale opierają się na czterech identycznych pozycjach. Demokratyczne pochodzenie nie jest typowe dla dziedziny technologii informacyjnej, ale należy złożyć hołd: połączenie i współistnienie wielu pomysłów dotyczących tej samej rzeczy jest rzeczywistym polimorfizmem w działaniu.

    Popularne definicje polimorfizmu

    OOP - kolejny etap rozwoju technologii informacyjnej. Dziękitych niewielu argumentuje, ale jego podstawowe aksjomaty i przepisy są tak odmienne pod względem semantyki, które nie zasługują na uwagę poza ich całkowitością.
  • Polimorfizm w programowaniu to możliwość zapewnienia tego samego interfejsu dla różnych form podstawowych (typów danych).
  • Polimorfizm - możliwość obiektów do innej realizacji.
  • Polimorfizm to zdolność funkcji
  • Classics (od twórcy C /C ++): "jeden interfejs - wiele implementacji".
  • parametryczne środki polimorfizmu
  • Polymorphism - teoria typów
  • pobór możliwe bez odwzorowania i spadku, za niemożliwe polimorfizm bez spadku
  • W zgadzają się, że wszystkie związane z jedną i to samo: ale forma wyrażania myśli, istoty i znaczenia - nie są podobne. Ale jest coś wspólnego.

    Essence: developer - customer

    Klasyczne tworzenie oprogramowania obejmuje obecność programisty i zadania (klienta, klienta). Programista analizuje zadanie, formalizuje go i tworzy kod, który prowadzi do wykonania. Klient odrzuca wszystkie proponowane lub tylko jego części, wskazując na braki, a programista ponownie wykonuje swoją pracę. Taki cykl procesu rozwiązania problemu sugeruje, że istnieją wyraźnie dwa zupełnie różne byty:
  • komputer nie może rozwiązać samego problemu;
  • wymaga programu, aby komputer mógł "zrozumieć" i "rozwiązać problem".
  • Cel - Zakres programu klienta - algorytm „adaptacji” do możliwości zadań komputera - w zakresie kompetencji programisty. Rolaten ostatni jest „dostosowanie” do wymagań problemów z komputerem, a to za dużo! Programowanie obiektowe sugeruje abstrakcję. Są obiekty - to sfera klienta; jest realizacja obiektów - to jest pole programisty. Nie ma żadnego "technologicznego" połączenia między klientem a deweloperem. Pomysł jest kardynalny, a nie wdrożony do tej pory, ale coś już działa stabilnie.

    okna, przyciski i inne elementy

    Historia Sztuki Techniki Powietrza, obiekt Magazine, Turbo Vision, wykres Vision - to już historia. Niewiele osób pamięta te realizacji OOP, nie są one używane i zapomniane, ale znajome okno interfejsu systemu Windows miliony ludzi i obiektów w środowisku PHP, JavaScript i inne języki Technologie internetowe są wykorzystywane przez setki tysięcy programistów kod wiedzą miliony turystów zasoby internetowe
    Prawdopodobnie jest to jedyny prawidłowy sposób rozwoju OOP: enkapsulacja, dziedziczenie, polimorfizm dla programisty, ale nie dla użytkownika. Jest rzeczą charakterystyczną, że stanowisko to było ważnym wydarzeniem w projekt wizualny (UI) systemu Windows, aplikacja typu Turbo Vision i wykres Vision.
    U podstaw produktów, takich jak techniki powietrza oraz magazynek Object znacznie. Ten obiekt abstrakcyjny był pierwszym przodkiem ynkapsulyroval Struktura informacji na przetwarzanie kodu poziom abstrakcyjnego. Obiekty okien, przycisków, elementy wizualizacji były tu wtórne. W pierwszej wersji (Windows i inne) paradygmat OWP: enkapsulacja, dziedziczenie, polimorfizm został odzwierciedlony na poziomie abstrakcyjnymprzodek, a implementacja kodu została uformowana na poziomie każdego poszczególnego potomka w gałęzi dziedziczenia zgodnie z pożądaną strukturą i treścią. W drugiej wersji (Air Art Technology and Object Magazine) ważny poziom abstrakcyjnego obiektu. To, co stanie się z konkretnym potomkiem - nie jest istotą, najważniejsze jest to, że jego dziedziczenie spełnia wymagania wszystkich rodziców aż do abstrakcji źródłowej.

    Obiekt i układ obiektów: algorytm

    Idealna koncepcja obiektowa może manipulować tylko układami obiektów i obiektów. W nowoczesnych językach programowania pod obiektem (klasa) zwykle rozumiemy opis obiektu i instancję obiektu, a do korzystania z opisu obiektu języki pozwalają programistowi pracować z obiektami statycznymi, podczas gdy obiekt dynamiczny - Jest to przykład opisu, z jego unikalną treścią i strukturą, ale używa tych samych właściwości opisu (opisu).
    Obecna praktyka odnosi się do pojęcia obiektu do instrumentu, tj. Do języka programowania, interfejsu, dostępu do bazy danych, połączenia sieciowego, ale nic nie wskazuje na interes klienta w rozwiązywanym problemie. Jest to idealne rozwiązanie dla prostego OOP: polimorfizm umożliwia w szczególności wykonywanie różnych elementów projektu, ale zarządzanie nimi za pomocą tego samego kodu. Ale tutaj nie chodzi o obiekty zadania, które nie są w ogóle rozpatrywane jako obiekt analizy obiektowej. Programiści wzięli OOP jako sposób na poprawę jakości i wydajności swojej pracy, ale nie ustąpili miejsca klientowi. Podstawowe pojęcia OOP - enkapsulacja,dziedziczenie, polimorfizm - pozostał w polu rozwoju, a nie wszczepiony w zakres zadania.

    Obiekt i układ przedmiotów: zadania i rozwiązania

    Komputer - programista - zadanie. Środkowe ogniwo jest zbędne. Idealnie powinno być tylko dwa względnie zależne kontury: (komputer - programista) - zadanie. Oznacza to, że użytkownik, klient lub odwiedzający ma narzędzie do rozwiązania swojego problemu. Jako zaimplementowane narzędzie, klient nie dba o to.
    Idealnie jest to komputer, który rozumie, czego chce klient, i robi to, co chce. Jak by to wyglądało: lokalny program lub strona internetowa dostępna przez przeglądarkę, specjalny program rozproszonego przetwarzania informacji, system informacyjny dla klienta - to nie ma znaczenia. Istotne jest, aby między zadaniem a komputerem nie było niepotrzebnych połączeń, ale najpierw zrozumiałe i rozwiązujące drugie. Aby osiągnąć ten cel, komputer i klient muszą być połączone przez jeden system obiektów, a treść, struktura i zawartość każdego obiektu jest określana przez klienta oraz metody i właściwości obiektów zaimplementowanych przez programistę. Idealny, gdy praca klienta w celu stworzenia systemu obiektowego, którego potrzebuje i praca nad wdrożeniem metod i właściwości tych obiektów są rozłożone w czasie. Im dalej będzie realizowana implementacja obiektów systemowych (programista) z treści treści (klient), tym lepszy proces. Nic nie przeszkadza klientowi i programistom w interakcji w procesie rozwiązywania problemu, ale ważne jest, aby mieć wyraźny rozdział semantyki. Każdy musi prowadzić własną działalność, programista nie musi opanowywać tego obszaruZadaniem aplikacji, a klient nie musi zrozumieć kod i są ponadto strony nie powinien dać sobie rady, że nie dotyczy ich.

    Tradycyjne i obiektów programowania

    podstawowych zasad OOP: hermetyzacja, dziedziczenie, polimorfizm w takiej postaci, w którym stają się one znane i popytu, co prowadzi do znacznego Poprawa jakości i niezawodności kodu znacznie przyspiesza programista i mają wiele innych pozytywne cechy.
    Ale rzeczy są tam: programowanie klasyczne nie jest gorsza od ich pozycji, a wiele pomysłów obiektowe realizowane klasyczny kod. Jednak pomysł z OWP i rekursji spowodowało odpowiedniej ekspozycji na operatorów składni języka klasycznego, logiki kodu konwencjonalnego, który ma żadnego związku z obiektowego stylu pisania i myślenia. Listy i kolej zmieniła pojęcie pierwszego i ostatniego elementu tablicy, były cykle „dla każdego” Opcje modelowe i nazewnictwa, użytkowania i wydajność stała się jeszcze bardziej popularna niż kiedykolwiek wcześniej. Rzeczywiście, fakt, że zmienne stracił ich „jasny” osoba (typ zmiennej może być zmieniany w zależności od potrzeb i nie opisuje zmienną potrzebne) mówi klasyk, w rzeczywistości od dawna obiektowego i ujmuje podstawowe zasady programowania obiektowego: hermetyzacja dziedziczenie, polimorfizm, jak pomysły są niezbędne.

    Jako podstawę, obiektu lub systemu

    abstrakcji jako podstawowych przepisów koncepcyjnych z OWP, bez względu na to, gdzie obszar odpowiedzialności (realizacja)obiekt - na poziomie pierwszego abstrakcyjnego obiektu lub na poziomie konkretnego potomka - pozostawia otwarte pytanie: od czego zacząć, od obiektu lub systemu?
    Jeśli podstawą jest umieszczenie przedmiotu, to nigdy nie stanie się on systemem, ponieważ system będzie w nim, a on stanie się sztywno całkowicie konkretnym początkiem. Tutaj, z abstrakcją, pojawiają się problemy: oryginalny obiekt dokładnie uchwycił główny problem w rozwiązaniu, czyli nie można go już przenieść na inne zadanie. Jeśli podstawą jest wprowadzenie systemu obiektów, to system systemów. Trudno jest sobie wyobrazić, w odniesieniu do konkretnego zadania, od którego można rozpocząć rozwój - jest to również trudne do zrozumienia. Ogólnie rzecz biorąc, OWP ze swoich różnic polimorfizmu w przyrodzie, formy realizacji, liczba rzeczywistych parametrów w funkcji sprawia, że ​​idea systemu, który jest na początku, jak
  • z rozwiązań problemu (np menu);
  • o warunkach początkowych (zastosowanie zadania w różnych warunkach, dane);
  • ​​
  • o trybach działania (testowanie, konfiguracja, praca).
  • Ale to i tym podobne nie dają mu powodu, aby ustanowić podstawę do rozwiązania problemu systemu przedmiotów. Często wystarczy zdefiniować jeden pojedynczy obiekt.

    Historia procesie rozwiązywania problemu

    Do najważniejszych zasad OOP: polimorfizm i abstrakcji - cel priorytetowy jako początkowy obiektów systemowych. W sporze, który powinien być nadal jajko czy kura, to zwycięstwo idzie do palaczy. Nie ma wątpliwości, że powinien zacząć od abstrakcyjnego obiektu, zamiast obiektów systemowych. Alebiorąc pod uwagę czynnik czasu i dołączyć go do poziomu każdego obiektu, począwszy od pierwszego streszczenia, a następnie umieścić kontrowersyjny pomysł na początku roztworu i obiektu, a system jest jedynym rozsądnym. Jeśli klasyczne pojęcie programowania w rozwiązaniu problemu zmienia zawartości plików baz danych i więcej zmian, pojęcie OOP polimorfizmu, enkapsulacji i czynnika czasu zmiany zawartości, struktury i właściwości obiektów systemowych problemu. programiści OOP w najmniejszym stopniu zainteresowany koncepcją plików, baz danych, algorytm - dany programista uważa za prawdziwe, ale obiekty istnieją w czasie i zmienić bieg osiąga swoje cele.
    Tak więc, na początku jest przedmiotem obiektów systemowych i logika systemu - Czas: rozpocząć zadanie formowania pierwszego obiektu, wejście lub zbierania danych, tworząc następną pozycję, ale nic nie stoi pierwszy obiekt do podjęcia następnej decyzji. Każdy poziom obiektów działa jako samodzielnych obiektów systemu, to znaczy, że jest jeden obiekt, ale w kontekście procesu rozpoczął, a wartość czasu - system obiektów na osi czasu. Dla pełnej realizacji polimorfizmu OOP, spadków i czynnika czasu połączyć, aby zapewnić dynamiczny pierwszy, że nie tylko może zmieniać się w czasie, ale również produkować elementy nie przewidziane przez autora generowanego w trakcie procesu zadania, przewidywane klienta.

    Prawdziwy polimorfizm OOP, przykład

    Złożoność zadań, która jest silnym OOP, nie jest porównywalna do tej dostępnej dla klasycznej pisowniprogramy. Oczywiście, rozwiązywanie każdego problemu jest zawsze dostępne w zwykły sposób, ale pytanie, ile to będzie kosztowało czas i wysiłek często sprawia, że ​​wynik jest bezużyteczny. Nie tak dawno temu powstała biblioteka PHPOffice /PHPWord, ale aby móc korzystać z jej możliwości, prawie zawsze trzeba stworzyć własny system obiektów. Na przykład prosty plik * .docx:
    to archiwum zip wielu plików i folderów Office Open XML (OpenXML, OOXML). Każdy plik jest zapisany w znacznikach XML, a podczas dodawania, modyfikowania i usuwania liter, słów, tabel, list i innych. elementy zawartości plików zaczynają reprezentować ciąg znaczników, które nie zawsze zawierają pełne elementy, często jeden element jest zapisywany przez zestaw znaczników. Jeśli prześlesz ten plik jako ciąg tagów, pojawi się interesujący obraz:
    Łatwo zauważyć, że pierwszy i jedyny akapit dokumentu jest reprezentowany przez wiele tagów. Jeśli chodzi o tabelę i wbudowaną w nią tabelę, to objętość opisu wszystkich elementów nie jest podatna na percepcję, ale jest dostępna dla aplikacji obiektowych. W rzeczywistości obraz jest zielony - jest to tag testu wyjściowego, żółty - parametry i typ tagu, beżowy - treść. Utworzone obiekty koncentrują się na obróbce. Tylko operacje otwierania pliku dokumentu, jego formatowania i nagrywania są dostępne dla osoby. Rozwiązanie jest proste i praktyczne, ale implementacja koncentruje się bardziej na komputerze niż na osobie, na powodach rozmiaru wykonalnych funkcjonalnych i złożonych połączeń między obiektami.

    Stan obszaru OOP

    Opracowanie systemów zarządzania obiektami, technologiamiKonfiguracja i zarządzanie serwerami, doświadczenie w tworzeniu dynamicznych stron internetowych sprawiało, że programowanie obiektowe było dostępne dla wszystkich. Problem polega na tym, jak zmienić swoje myślenie i przyzwyczaić się do myślenia na poziomie obiektu, a nie w kontekście konsekwentnie wykonywanego kodu. Zwykle przejście z programowania klasycznego na obiektowe zajmuje od dwóch do trzech miesięcy, ale koszt się nadmiernie opłaca. Potencjał nowoczesnych języków programowania, głównie PHP i javascript, zadowoli najbardziej wymagającego programistę. Współczesny OOP - polimorfizm, dziedziczenie i zdolność do kształtowania właściwości obiektów - wygodna i praktyczna, składnia językowa i narzędzia pomocnicze zapewniają komfort pracy i wydajność kodu.

    Perspektywy idei obiektu

    Jak długo będzie klasyczne programowanie i jak będzie rozwijać OWP - trudno powiedzieć. Najwyraźniej twórcy narzędzi nie planują brać pod uwagę kontekstu konsumenta (użytkownika, klienta). Zestaw narzędzi OOP - polimorfizm, imitacja, enkapsulacja i abstrakcja - są zorientowane na programistę. Nowoczesne systemy informacyjne i zasoby sieciowe starają się odzwierciedlać rzeczywistą rzeczywistość, zapewniać funkcjonowanie rzeczywistych obiektów i tworzyć środowisko dla ich działania, tak proste, że będzie dostępne dla konsumenta z dala od programowania, całkowicie zanurzone w jego obszarze kompetencji.

    Powiązane publikacje