Ściąga-Delfi, Politechnika Lubelska, Studia, Studia, sem VI, z ksero na wydziale elektrycznym


Aspekty programowania obiektowego

Klasa - jest rozszerzeniem obiektowego typu danych, dla którego metody są ze sobą powiązane (współpracujące) wewnątrz niej samej.

Relacje miedzy klasami:

- dziedziczenie (forma wielokrotnego wykorzystania kodu) - nowe klasy tworzy się na podstawie istniejących klas : wchłania cechy i zachowania obiektu (klasy potomnej) dołączając je do własnej

- zastępowanie metod - przedefiniowanie odziedziczonych metod (dla metod public)

- podklasa dziedziczy od nadklasy

- bezpośrednia nadklasa - podklasa jawnie dziedzicząca

- pośrednia nadklasa - podklasa dziedziczy od dwóch albo więcej poziomów w gore (hierarchii klas)

Dostęp do modyfikacji:

- public

- private

- protected

Wprowadzenie dostępu chronionego (protected)

Relacje:

- „is” - dziedzictwo; obiekt podklasy „jest” obiektem nadklasy

- „has” - kompozycja; obiekt „zawiera” obiekt innej klasy jako członka

Biblioteki klas

- nowe klasy mogą dziedziczyć od siebie

- oprogramowanie może zostać zbudowane od standardowego, nadającego się do wielokrotnego użycia komponentów (jak sprzęt komputerowy)

- utworzy potężniejsze oprogramowanie

Użycie dziedziczenia

- pewne zachowania albo dane są wspólne między grupą klas a tworzą nową klasę

Relacje pomiędzy klasami

- klasa nadrzędna (nadklasa)

*człon public: dostępny gdziekolwiek program ma odniesienie do nadklasy albo do typu podklasy

*człon private: dostępny tylko w metodach nadklas

*człon protected: pośrednie zabezpieczenie pomiędzy członami public a private

*dostęp przez metody nadklasy i podklasy albo klasy w tej samej hierarchii

Obiekt podklasy

- może zostać potraktowany jako obiekt nadklasy- nie spełniony jest warunek odwrotności

- wiele klas może dziedziczyć od jednej nadklasy

- wybór odniesień nadklasy

- przetwarzanie wszystkich obiektów jako obiekty jednej nadklasy

Relacja miedzy klasami

- metody przełączające

*podklasa może przedefiniować metody nadklasy

*odwołanie się do konstruktora nadklasy

Constructor(); // jeśli wymagane to podać argumenty

* jeśli odwołanie jest jawne, musi być użyte jako pierwsze

- związek („know-a”) - relacja może zaistnieć pomiędzy dwoma klasami:

* jeśli metoda jednej klasy lub klas istnieje jako zmienna lokalna przykład innej klasy

* jeśli atrybuty jednej klasy są cechą innej klasy

- agregacja („has-as”) - relacja agregacji istnieje między dwoma klasami jeśli:

*pole jednej klasy jest składową innej klasy

*druga klasa jest częścią jednej klasy

- dziedzictwo („is-a”) - relacja dziedzictwa istnieje jeśli jedna klasa jest dziedzictwem innej klasy

Zakres dostępu

Poziom | klasa | podklasa | nie w klasie

Public | + | + | +

Protec | + | + | -

Priv | + | - | -

Mechanizm dziedziczenia

Grupowanie obiektów w systemach obiektowych

- w językach opisujących dziedzinę problemową przez prototyp (a nie klasy_. Występuje mechanizm delegacji

- dziedziczenie grupuje obiekty zgodnie z ich typami

- delegacja nie definiuje kategorii obiektów lecz umożliwia współdzielenie między dowolnymi obiektami

- system obiektowy oparty na dziedziczeniu oferuje klasy i obiekty

- system oparty na detekcji bazuje na jednym obiekcie łączącym w sobie cechy klasy i obiektu

Delegacja

- pozwala na stopniowe definiowanie obiektów w terminach innych obiektów

- pozwala na współdzielenie funkcji i zmiennych

* delegacja atrybutów funkcji lub zmiennych do innego prototypu, wymusza zmianę tych atrybutów ich wartości (dotyczy zarówno obiektu i prototypu)

* w ten sposób obiekty w hierarchii delegacji mogą być wzajemnie zależne:

**ponieważ w systemie opartym na delegacji nie ma grupowania

**dwa obiekty o różnych typach mogą delegować do tego samego prototypu

** podobnie jak dwa obiekty tego samego typu mogą delegować do różnych prototypów

Różnica pomiędzy klasycznym (opartym na klasach) a prototypowym podejściu dotyczy:

- wielowiekowej filozoficznej debaty odnoszącej się do statusu i reprezentacji abstrakcji

- według Platona abstrakcja (ideał) istnieje bardziej rzeczywiście niż przedmiot w rzeczywistym świecie

Język obiektowy (Smaltalk) nawiązuje do tych idei w sensie bezpośredniego użycia klas do reprezentowania podobieństwa wśród kolekcji obiektów. Klasyczne i prototypowe podejście języków obiektowych różni się w sposobie reprezentowania i współdzielenia abstrakcji.

Klasyczny język rozróżnia współdzielenie atrybutów klas przez:

-obiekty

-współdzielenie atrybutów nadklas przez klasy

-języki prototypowe posiadają jeden rodzaj współdzielenia - poprzez prototyp

Przykład klas w systemach opartych a delegacji:

- aktor

- prototyp

Grupowanie poprzez typy jest użyteczne

- dla kompilacji

- indeksowania baz danych

Mały rozmiar obiektów w modelach delegacji zwiększa szybkość działania systemu

W systemie dziedziczenia opartym na klasach nowe obiekty tworzone są poprzez odwołanie cech klasy do której należy.

W modelu delegacji nowe obiekty - prototypy tworzone są poprzez klonowanie czylu kopiowanie.

W systemie opartym na klasach żaden z obiektów nie jest samo wystarczalny:

W systemie opartym na prototypach obiekt (prototyp) zawiera swój własny stan behawioralny w związku z czym nie musi być zależny od innych obiektów.

System prototypowy pozbawiony dziedziczenia prowadzi do problemu:

- mianowicie każdy obiekt (prototyp) powinien zawierać wszystkie swoje stany

Rozwiązaniem umożliwiającym współdzielenie stanów behawioralnych dla rodziny obiektów jest wykreowanie obiektu, który zawiera wspólne stany dla kolekcji obiektów i podobnie jak to czyni klasa, z wyjątkiem informacji dotyczącej samej (siebie ;) - chyba)

Kierunki doskonalenia systemu dotyczą:

- współbieżności

- przetwarzania rozproszonego

Dziedziczenie wymaga strukturalnego współdzielenia zasobów. Współdzielenie wymaga niezależnego obiektów. Przetwarzanie rozproszone zwiększa autonomię procesów.

Podczas próby zastosowania przetwarzania rozproszonego przy wykorzystaniu mechanizmów dziedziczenia pojawi się niespójność:

- pomiędzy rozproszeniem i dziedziczeniem na skutek różnicy celów modularności i współdzielenia :

*modularność wymaga separacji pomiędzy komponentami

*współdzielenie wymaga fuzji komponentów

Cecha dziedziczenia zawiera:

- dziedziczenie strukturalne (dziedziczenie struktury klasy)

- dziedziczenie funkcjonalne (dziedziczy funkcję nadklasy)

Klasa obiektu opisuje swoją strukturę za pomocą zmiennych:

- zmienne podklasy muszą zachować ten sam typ informacji co zmienne nadklasy

- zmienne w hierarchii dziedziczenia są wzajemnie niezależne. Jeżeli typ podrzędny dziedziczy cechy typu nadrzędnego to każdy obiekt typu podrzędnego automatycznie zawiera jako część swojej reprezentacji, lokalne stany (zmienne) obiektu typu nadrzędnego

Podklasy nie mogą odwołać się do zmiennych nadklasy bezpośrednio. Zmienne nadklasy mogą być zmieniane jedynie za pomocą funkcji zdefiniowanych dla danej klasy.

Bardziej ogólnym podejściem, które łączy efektywność o elastyczność jest wprowadzenie notacji:

- public - private - visible

pozostawienie konkretnej implementacji by zapewnić wymaganą ochronę danych.

Klasa definiuje:

- strukturę

- zachowanie obiektu

- zachowanie obiektu jest określone za pomocą funkcji stowarzyszonych ze zmiennymi danej klasy

- funkcje są operacjami, za pomocą których dane mogą być pobierane o uaktualizowane

W hierarchii dziedziczenia funkcja definiowana dla danej klasy jest dziedziczona przez jego podklasę.

Dziedziczone funkcje są łącznikiem, za pomocą którego możemy obsługiwać dane podklasy.

Polimorfizm metod - operacja wywoływana przez komunikat może być różnie wykonywana, w zależności od rodzaju obiektu, od którego ten komunikat został wysłany.

Polimorfizm typów - polimorfizm w tzw. polimorficznych językach programowania oznacza istnienie procedur lub funkcji, które mogą zarówno przyjmować wartości wielu typów jako swoje argumenty, jak też i zwracać wartości wielu typów:

- przykładowo funkcja pobierz_pierwszy(lista) zwraca pierwszy element dowolnej listy, niezależnie od tego czy jest to lista liczb całkowitych, rzeczywistych czy lista rekordów.

Polimorfizm typów jest uważanych za podstawę

Polimorfizm metod jest szczegółowym przypadkiem polimorfizmu typów (obiekt, do którego jest wysyłany komunikat jest dodatkowym parametrem metody) nie jest zbyt przekonywujące

Polimorfizm parametryczny - rodzaj polimorfizmu typów, który oznacza, że typ bytu programistycznego może być parametryzowany innym typem, np. klasa:

- wektor(int)

- wektor(char)

Polimorficzne języki programowania (HL,Quest, Napier88) nie muszą być obiektowe, ale mogą być.

W środowisku LabView polimorfizm występuje w:

-operacjach na tablicach

-operacjach porównań

-operacjach na łańcuchach

-operacjach typu numerie

Typ wyjścia funkcji arytmetycznych jest taki sam jak typ wejścia. Dla funkcji z jednym wejściem, funkcje operują na każdym elemencie struktury. Dla funkcji z dwoma wejściami należy użyć następujących wejściowych kombinacji:

- wejścia podobne -> taka sama struktura na wyjściu

- jedna jest skalarem (skalar + tablica -> tablica)

- tablica + tablica -> tablica

obiekt - struktura danych występująca łącznie z operacjami dozwolonymi do wykonania na niej, odpowiada bytowi wyróżnianemu w rzeczywistości.

Tożsamość obiektów - wewnętrzny identyfikator, który pozwala na odróżnienie go od innych obiektów

Hermetyzacja - rozróżnienie pomiędzy interfejsami obiektu opisującym co obiekt robi, a implementacją definiującą jak jest zbudowany i jak robi to co ma robić

Dziedziczenie - wielokrotne użycie tego co wcześniej zostało zrobione: zdefiniowanie klas, które mają wszystkie cechy zdefiniowane wcześniej (z nadklasy) plus cechy nowe

Polimorfizm - wybór nazwy dla operacji jest określony wyłącznie z semantyką operacji. Decyzja o tym która metoda implementuje daną operację zależy od przynależności obiektu do odpowiedniej klasy

===============================

17. XI

<<<< tutaj jest fajny obrazek z 6 jpega...

Podstawowe klasy:

- TObject

- TComponent

- TGraphicsControl, TWinControl

- TForm

- TApplication

- TException

Komponenty niewizualne:

- wywodzą się z klasy TComponent

- nie są widoczne dla użytkownika w czasie działania aplikacji

- zmiana działania i parametrów aplikacji jest możliwa na etapie powstawania kodu źródłowego

- przykład: Ttimer, Ttable, TOpenDiag

Komponenty wizualne

- wywodzą się z klasy TControl

- są widocznymi dla użytkownika elementami interfejsu użytkownika, przy czym niekoniecznie muszą wykazywać przejaw interakcji z użytkownikiem

- klasa TControl definiuje własności bezpośrednio związane z geometria: Tcontrol , Top, Left, Width, Height

Komponenty

- komponent jest samodzielnym binarnym fragmentem oprogramowania, które jest w stanie wykonać predefiniowane funkcje

- przykłady: Text, Label, Edit, ListBox

Komponent a kontrolka

- kontrolka jest widzialnym elementem intefejsu użytkownika, natomiast komponent jest każdym obiektem, który może pojawić się w palecie komponentów i którego właściwościami można operować na etapie projektowania

- każda kontrolka wywodzi się w Delphi z klasy TControl będącej z kolei pochodną klasy TComponent - tak więc każda kontrolka jest jednocześnie komponentem, nie każdy komponent jest jednak kontrolką

===============================

07.10.2004

Podstawowe aspekty programowania

- kontrolowanie

- nauczanie

- proces obliczeniowy zadanego problemu

- kreatywność - należy dobrać najlepsze rozwiązanie

- modelowanie - przedstawienie w abstrakcyjnej formie

- abstrakcja - wyselekcjowanie ważnych szczegółów

Program

Model złożonego systemu:

- Model: zespolony fragment danego systemu reprezentujący szczególnie istotne szczegóły rzeczywistości w abstrakcie opisującym

- system: kolekcja komponentów synchronicznie ze sobą współpracujących

Specyficzne odzwierciedlenia poszczególnych sekwencji w języku programowania

- skladnia - formułowanie ciągu instrukcji ściśle określonych reguł gramatycznych

- semantyka - rozumienie (interpretacja) zadanych instrukcji

Instrukcje wypisane przez programistę

-zaimplementowane w konkretnym języku programowania

-język programowania wymaga pracy opisu niż język komunikacji międzyludzkiej

Warstwy środowiska:

- warstwa systemu operacyjnego

- warstwa aplikacji

===============================

10.11.2004

Inspektor obiektów

properties (własności)

Events (zdarzenia)

- własności komponentu kontroluje jego wygląd i działanie

- zakładki Eventrs zawiera listę zdarzeń charakterystycznych dla komponentów

- zdarzenie

Programowanie oparte o kolejność instrukcji lub o zdarzenia

Flow driven - kolejność instrukcji

- typowe programy tekstowe

- instrukcje wykonywane są kolejno( z przeskokiem jeśli instrukcja warunkowa)

- użytkownik wprowadza dane na żądanie programu

Even driven - zdarzeniowe

- typowe programy zdarzeniowe

- nie można przewidzieć kolejności wykonywania

- instrukcje są wykonywane w odpowiedzi na akcje użytkownika lub akcje zachodzące w programie lub systemie

Co to jest zdarzenie

Event - jest to mechanizm łączący jakieś zdarzenie (occurence) wewnętrzne lub zewnętrzne z wykorzystaniem fragmentu kodu

zdarzenie -> mechanizm zdarzenia -> obsługa zdarzenia

Procedura obsługi:

- zdarzenia są obsługiwane przez procedury wskazywane przez odpowiednie własności komponentu (properties)

- jeśli własność wskaźnika (np. onClick) do obsługi zdarzenia jest różna od nil to zostaje wywołana procedura wskazana przez wskaźnik

- zawiadomienie:

*istnieje -parametrem jest komponent w którym zostało zdarzenie

*brak - nie ma mechanizmu zwrotnego (no feedback)

TNotyfiEvent

OnClick

Procedure Tform1.Button1Click(Sender: TObject1);

Begin {kod źródłowy}

End;

- OnClick jest wskaźnikiem do procedury typu TNotyfiEvent

- Tform1.ButtonClick jest procedura na którą „wskazuje” wartość OnClick

Komponenty jako właściciele innych komponentów:

interpretacja relacji własności:

każdy komponent w czasie swej destrukcji zobowiązany jest zwolnić wszystkie komponenty, których jest właścicielem:

- TB_Przycisk = Tbutton.Create(self);

przykład obiektu osieroconego

Try ....

finally

TT_Dane.Free;

End;

Wybrane klasy komponentów i ich własności

- TPersistent

klasa bazowa dla wszystkich klas zdolnych do przechowywania w strumieniach zawartości swych obiektów

ważniejsze metody:

Assign() - dokonuje kopiowania zawartości pomiędzy dwoma obiektami tej samej klasy

DefineProperties() - definiuje sposób zapisu właściwości do strumienia

- TComponent

wywodzi się z niej każdy komponent w Delphi

ważniejsze właściwości

Owner - zawiera wskaźniki komponentu właściciela

ComponentCount - zazwiera liczbę zawłaszczonych komponentów

Components = tablica wskazań na zawłaszczone komponenty

Name - unikalna nazwa komponentu

Tag - pole pomocnicze, bez określonego przeznaczenia

ważniejsze metody:

*constructor Create(Aownet: TComponent);virtual;

MyEdit:=FindComponent(`Ed_tekst');

If MyEdiy is Tedit then

Tedit(MyEdit).text = `Okno edycyjne';

*HasParent

*GetParent

- TControl

reprezentuje komponenty wizualne(kontrolki)

- TWinControl

klasa bazowa dla okienkowych kontrolek

-TGraphicsControl

klasa nieaktywnych kontrolek graficznych

- TCustom

klasy bazowe dla potrzeb tworzenia nowych komponentów, np.. TcustomControl, TCcustonEdit

- TCanvas

wiele kontrolek posiada własność Canvas wskazująca na obiekt zwany płótnem i realizującym wszelkie operacje graficzne.

Zestaw własności klasy:

METODA

TYP WYNIKU

ZNACZENIE

ClassName

String

Nazwa klasy

ClassType

TClass

Klasa obiektu

InhertisFrom

Boolean

Test przynależności do klasy lub pochodnych

ClassParent

TClass

Klasa macierzysta w stosunku do klasy obiektu

InstancesSize

Word

Rozmiar obiektu w bajtach

Classinfo

Pointer

Wskaźnik do struktury RTTI (Run Time Type Information)



Wyszukiwarka

Podobne podstrony:
Ściąga-Fizyka ED 7, Politechnika Lubelska, Studia, Studia, sem VI, z ksero na wydziale elektrycznym
Ściąga-Zabezpieczenia Rutka D, Politechnika Lubelska, Studia, Studia, sem VI, z ksero na wydziale el
Ściąga-Teoria sterowania, Politechnika Lubelska, Studia, Studia, sem VI, z ksero na wydziale elektry
Ściąga-Maszyny, Politechnika Lubelska, Studia, Studia, sem VI, z ksero na wydziale elektrycznym
Ściąga-Elektrotechnika ED 7, Politechnika Lubelska, Studia, Studia, sem VI, z ksero na wydziale elek
Test-Elektronika D, Politechnika Lubelska, Studia, Studia, sem VI, z ksero na wydziale elektrycznym
Technika Łączenia 4 - nagrzew. gł. toru prąd, Politechnika Lubelska, Studia, Studia, sem VI, z ksero
Urządzenia 4. - parametry łączników, Politechnika Lubelska, Studia, Studia, sem VI, z ksero na wydzi
Urządzenia 4. - parametry łączników, Politechnika Lubelska, Studia, Studia, sem VI, z ksero na wydzi
Urządzenia 2 - pomiar prędkości łuku, Politechnika Lubelska, Studia, Studia, sem VI, z ksero na wydz
Test-Fizyka ED 7, Politechnika Lubelska, Studia, Studia, sem VI, z ksero na wydziale elektrycznym
TVN 14, Politechnika Lubelska, Studia, Studia, sem VI, z ksero na wydziale elektrycznym
Teor. ster. 4, Politechnika Lubelska, Studia, Studia, sem VI, z ksero na wydziale elektrycznym
Urządzenia 3 - przekład. napięci.-protokół, Politechnika Lubelska, Studia, Studia, sem VI, z ksero n
Urządzenia 3 - przekład. napięci.-protokół(1), Politechnika Lubelska, Studia, Studia, sem VI, z kser
TWN14, Politechnika Lubelska, Studia, Studia, sem VI, z ksero na wydziale elektrycznym
Energoelektronika 4, Politechnika Lubelska, Studia, Studia, sem VI, z ksero na wydziale elektrycznym
TWN 13, Politechnika Lubelska, Studia, Studia, sem VI, z ksero na wydziale elektrycznym
TVN 13, Politechnika Lubelska, Studia, Studia, sem VI, z ksero na wydziale elektrycznym

więcej podobnych podstron