1 / 33

Podstawowe cechy programowania obiektowego

Wykład 11. Podstawowe cechy programowania obiektowego. Programowanie strukturalne (proceduralne) – koncepcja tradycyjna .

brent
Download Presentation

Podstawowe cechy programowania obiektowego

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Wykład 11 Podstawowe cechy programowania obiektowego

  2. Programowanie strukturalne (proceduralne) – koncepcja tradycyjna. Główną jego składową są instrukcje działające na danych. Złożone programy korzystają z funkcji, procedur i modułów w celu uproszczenia zarządzania i kontroli nad programem, lecz nie zmienia to podstawowej koncepcji.

  3. Wady programowania strukturalnego ■dane są dostępne w całym programie– łatwo o błędy, ■sekwencyjność wykonywania programu, instrukcje wykonywane kolejno, ■wszystkie sytuacje trzeba przewidywaći obsługiwać, ■konieczność testowania po każdej zmianie, ■wiele instrukcji, obszerny kod, trudność zrozumienia algorytmu

  4. Poprawa: stosowanie procedur ze zmiennymi lokalnymi, moduły biblioteczne. „Kryzys oprogramowania” – programowanie strukturalne utrudnia panowanie nad bardzo złożonymi systemami informatycznymi SI (rozwój sprzętu wyprzedzał techniki budowania SI). Potrzebne były metody zwiększające wydajność i systematyczność tworzenia SI,a następnie ich wydajność. Korzenie technologii obiektowej – lata 60-te, Nygaardi Dohl, Simula 1, Simula67 (1967).

  5. OBIEKTOWOŚĆ – filozofia tworzenia na podstawie rzeczywistych zjawisk otaczającego świata (nie tylko język programowania)

  6. Np. typ tablica ma swoje cechy – atrybuty: ■wymiar ■rozmiar ■typ przechowywanych danych nie określa się jednak explicite sposobów operacji na tablicach (np. dodawanie tablic), trzeba do tej operacji tworzyć własne kody lub korzystaćz bibliotecznych procedur, których użycie wymaga szczegółowego zapoznania się z zestawem parametrów formalnych (sposób użycia).

  7. Stworzono tzw. ADT – abstrakcyjny typ danych – podążanie w kierunku naturalnego języka (zbliżenie do rzeczywistości), nazwano modułem (język Modula) lub klasą (język Simula). System reaguje na zdarzenia („siły sprawcze”), efektem są procesy: ■funkcje przetwarzania parametrów obiektów ■przesyłu informacji między obiektami ■oddziaływania jednych obiektów na inne

  8. PROGRAMOWANIE OOP – podstawowe pojęcia Programowanie zorientowane obiektowo (OOP – Object Oriented Programming) umożliwia przedstawienie problemu w postaci logicznie powiązanych ze sobą struktur danych zwanych obiektami, wymieniających informacje między sobą. „Obiektowość” opiera się na koncepcyjnym (intuicyjnym) klasyfikowaniu rzeczywistości. Na świat składają się obiekty i procesy w nich zachodzące. Koncepcja (pojęcie) =KLASA=typ obiektowy=encja (entity) Reprezentacja w klasie =instancja w klasie = OBIEKT. Podobnie jak typ zmiennej i zmienna

  9. Koncepcja (pojęcie) jest wyobrażeniem lub oznaczeniem stosowanym do rzeczy lub obiektów w naszej świadomości (Martin) (Encja = byt pojęciowy, konceptualny) Przykład 1: klasyfikacja obiektów materialne: osoba, samochód niematerialne (abstrakcyjne): firma, czas, role: pacjent, nauczyciel, relacyjne: małżeństwo, posiadanie zdarzeniowe: sprzedaż, wysłanie inne: zestaw, ikona, sygnał, proces

  10. Łatwo zrozumieć pojęcia materialne, trudniej abstrakcyjne. Przenikanie i wzajemna zależność pojęć. Typy: Obiekty: kamera SONY, wyrób japoński, urządzenie do rejestracji obrazu, magnetowid Panasonic magnetowid Toyota Celica

  11. OBIEKTY – egzemplarze typów obiektowych (TO) Np. Samochód (TO)– Toyota, Renault (obiekty) wyrób Renault (TO) – Megane, Kangoo, Clio (obiekty) KLASA - zbiór obiektów „przefiltrowanych” przez definicję typu obiektowego - sklasyfikowanych do tego typu. Może być brak obiektów w klasie (np. klasa perpetuum mobile, samochód napędzany wodą) Obiekty mogą należeć do różnych klas, np. obiekty: klasy: Jan, Ewa, Zenon, Jerzy pracownik, kobieta, mężczyzna

  12. W DELPHI – obiekty użytkowe są zazwyczaj komponentami graficznymi: okna, kontrolki itp., ale nie tylko. Istnieje pewna grupa klas zdefiniowanych w Delphi – drzewo klas

  13. TObject TPersistent TGraphic TComponent TCanvas TPicture TStrings TScreen TMenuItem TMenu TControl TGlobalComponent TGraphicControl TWinControl TApplication TCustomEdit TCustomComboBox TCustomListBox TButtonControl TCustomControl TScrollingWinControl TForm

  14. Własność polegająca na dostępie do pól jedynie przy użyciu metod nazywa się hermetyzacją. Tworzy to dyscyplinę programowania, w jednym miejscu mamy dane i dozwolone operacje na nich. Ułatwia kontrolę poprawności złożonych programów.

  15. Typ obiektowy jest to złożona struktura danych o określonej liczbie atrybutów. Atrybuty dzielimy na pola i metody. pola(fields) – atrybuty (właściwości opisane wartościami dowolnych typów, także strukturalnych) Pole jest to zmienna, która może być różnego typu (liczbowego, tekstowego, tablicowego, także obiektowego). metody(methods) – procedury i funkcje wykonywane na polach. Metoda jest czynnością wykonywaną na obiekciew postaci procedury lub funkcji. Metoda obiektu operuje na polach (danych) obiektu, przy ich pomocy mamy dostęp do pól.

  16. Właściwość (property) jest rozwinięciem pola. Umożliwia ona wbudowanie kontroli zmian wartości oraz powiązanie ze sobą metody i pola. Metoda powiązana z właściwością jest automatycznie wywoływana przy odczycie lub zmianie wartości właściwości Zdarzenie (event) jest właściwością, która może zawieraćtzw. wskaźnik do metody. Po wystąpieniu w systemie zdarzenia, takiego jak np. kliknięcie przycisku myszy w powiązaniu z obiektem, informacja o tym jest wysyłana do odpowiedniego elementu sterującego. Jeśli w tym elemencie zdarzenie OnClick zawiera wskaźnik do metody obiektu, to metoda ta jest wywoływana. Dzięki zdarzeniom tworzy się metody reagujące na polecenia użytkownika

  17. DZIEDZICZNOŚĆ Typ obiektowy może on być: • niezależny, (zdefiniowany podobnie jak typ rekordowy) • jako potomek istniejącego. Wtedy mówimy, że obiekt dziedziczy wszystkie elementy (pola i metody) swojego przodka lub jest typem potomnym. • Obiekty potomne mogą mieć własnego potomka (lub wielu).

  18. Wzajemne zależności obiektów układają się w drzewo hierarchii obiektów. Dziedziczność bezpośrednia – przodek jest niezależny (sam nie ma przodka) Dziedziczność pośrednia – przodek już dziedziczy (sam ma przodka) Przykład: type polozenie = class{obiekt niezależny} x:integer; y:integer; end; punkt = class (polozenie) {obiekt potomny} widocznosc: Boolean; end;

  19. POLIMORFIZM Potomek może mieć tę samą nazwę metody jak przodek, „przykrywa” ona wówczas metodę przodka. Definiując metodę potomka(rozwijając ją lub modyfikując), (np. gdy jest ona rozszerzeniem metody nadrzędnej), można odwołać się do metody dziedziczonej od przodka. Jest to tzw. POLIMORFIZM Polimorfizm (wielopostaciowość) - wykorzystanie tzw. metod wirtualnych.

  20. Metoda jest to procedura lub funkcja mająca deklarację w ramach typu obiektowego (sam nagłówek procedury lub funkcji). Definicja metody występuje poza definicją typu obiektowego i po niej. W nagłówku definicji nazwa jest kwalifikowana, czyli wskazuje na obiekt, którego dotyczy i ma postać: nazwa_typu_obiektowego . nazwa_metody np. TForm1.Button1Click

  21. definicja klasy Przykład: type polozenie = class{obiekt niezależny} x:integer; y:integer; procedure przesun (nx, ny: Integer); end; procedurepolozenie.przesun(nx, ny: Integer); begin x:=nx; y:=ny; end; pola nagłówek metody definicja metody

  22. Konstruktor – specjalna metoda używana przy tworzeniu (instancji) obiektu danej klasy – zmienna typu obiektowego Destruktor – specjalna metoda wywoływana automatycznie tuż przed zakończeniem istnienia obiektu

  23. Poziomy dostępu do składników klasy Private – pola i metody ukryte, niewidzialne poza klasą, chyba, że w tym samym module Public – pola i metody dostępne, nawet jeśli są w innym module, umieszczonym na liście USES Protected - pola i metody dostępne tylko dla potomków Published – elementy, które znajdą się w Inspektorze obiektów, jeśli zarejestrujemy klasę

  24. Przykład 1 Tworzenie instancji obiektów na bazie istniejących klas VCL var etykieta:TLabel; implementation procedure TForm1.Button1Click(Sender: TObject); begin etykieta:=TLabel.create(self); etykieta.Parent:=self; etykieta.Left:=100; etykieta.Top:=150; etykieta.Font.Size:=16; etykieta.Caption:='Jakis napis'; end; procedure TForm1.Button2Click(Sender: TObject); begin etykieta.destroy; etykieta:=nil; etykieta.free; end;

  25. Przykład 2 Tworzenie własnego typu obiektowego (klasy) Definicja klasy type TProstokat= class private Parent:TObject; LGX:Integer; LGY:Integer; PDX:Integer; PDY:Integer; public function Szerokosc:Integer; function Wysokosc:Integer; procedure UstawProstokat(LX,LY,PX,PY:Integer); procedure ZmniejszProstokat(dS,dW:Integer); constructor Create(Sender: TObject); destructor Destroy;override; end; //koniec definicji TProstokat2= class (TProstokat) //potomny private widocznosc:Boolean; procedure Ukryj; procedure Odkryj; end;

  26. TForm1 = class(TForm) Tworzenie: TButton; Edit1: TEdit; PokazWymiary: TButton; Edit2: TEdit; Label1: TLabel; Label2: TLabel; Zmniejsz: TButton; Usun: TButton; Shape1: TShape; Pokaz: TButton; PobierzWymiary: TButton; Edit3: TEdit; Edit4: TEdit; Edit5: TEdit; Edit6: TEdit; Ukryj: TButton; Edit7: TEdit; Odkryj: TButton; procedure TworzenieClick(Sender: TObject); procedure PokazWymiaryClick(Sender: TObject); procedure ZmniejszClick(Sender: TObject); procedure UsunClick(Sender: TObject); procedure PobierzWymiaryClick(Sender: TObject); procedure UkryjClick(Sender: TObject); procedure PokazClick(Sender: TObject); procedure OdkryjClick(Sender: TObject); end; klasa formularza

  27. deklaracja zmiennych obiektowych var Form1: TForm1; prost :TProstokat2;

  28. mplementation {$R *.dfm} //konstruktor constructor TProstokat.create(Sender:TObject); begin inherited create; end; //destruktor destructor TProstokat.destroy; begin inherited destroy; end; function TProstokat.Szerokosc:Integer; begin Result:=PDX-LGX end; function TProstokat.Wysokosc:Integer; begin Result:=PDY - LGY; end;

  29. (LGX,LGY) procedure TProstokat.UstawProstokat(LX,LY,PX,PY:Integer); begin LGX:=LX; LGY:=LY; PDX:=PX; PDY:=PY; end; procedure TProstokat.ZmniejszProstokat(dS,dW:Integer); begin PDX:=PDX-dS; PDY:=PDY-dW end; procedure TProstokat2.Odkryj; begin if prost<>nil then prost.widocznosc:= true end; procedure TProstokat2.Ukryj; begin if prost<>nil then prost.widocznosc:= false end; (PDX,PDY)

  30. // procedury formularza //-------------------------------------- procedure TForm1.TworzenieClick(Sender: TObject); begin prost:=TProstokat2.Create(Self); prost.Parent:=self; prost.UstawProstokat(20,20,100,100); prost.Odkryj; end; procedure TForm1.PokazWymiaryClick(Sender: TObject); begin if prost<>nil then begin Edit1.Text:=IntToStr(Prost.Szerokosc); Edit2.Text:=IntToStr(Prost.Wysokosc) end else begin Edit1.Text:='Brak obiektu'; Edit2.Text:=''; end; end;

  31. procedure TForm1.ZmniejszClick(Sender: TObject); begin //sprawdzenie czy istnieje bo inaczej bląd obliczenia //wymiarów gdy nie ma obiektu if prost<>nil then begin prost.ZmniejszProstokat(2,2); Edit1.Text:=IntToStr(Prost.Szerokosc); Edit2.Text:=IntToStr(Prost.Wysokosc); end; end; procedure TForm1.UsunClick(Sender: TObject); begin prost:=nil; prost.Free; //sprawdzenie czy instancja obiektu istnieje if prost<>nil then Shape1.Visible:=true else Shape1.Visible:=false; end;

  32. procedure TForm1.PobierzWymiaryClick(Sender: TObject); begin if prost<>nil then prost.UstawProstokat(StrToInt(Edit3.Text),StrToInt(Edit4.Text),StrToInt(Edit5.Text), StrToInt(Edit6.Text)); end; procedure TForm1.UkryjClick(Sender: TObject); begin //sprawdzenie czy instancja obiektu istnieje if prost<>nil then prost.Ukryj; end; procedure TForm1.OdkryjClick(Sender: TObject); begin //sprawdzenie czy instancja obiektu istnieje if prost<>nil then prost.Odkryj; end;

  33. procedure TForm1.PokazClick(Sender: TObject); begin if (prost<>nil) then begin Shape1.Width:=prost.Szerokosc; Shape1.Height:=prost.Wysokosc; if prost.widocznosc then begin Edit7.Text:='Widoczny'; Shape1.Visible:=true; end else begin Edit7.Text:='Niewidoczny'; Shape1.Visible:=false; end end else Edit7.Text:='Nie ma obiektu'; end;

More Related