wykład 12

34
Wykład 12 Informatyka PDF

Upload: annick

Post on 15-Jan-2016

47 views

Category:

Documents


0 download

DESCRIPTION

Informatyka PDF. Wykład 12. Podstawowe cechy programowania obiektowego. Programowanie strukturalne (proceduralne) – koncepcja tradycyjna . Główną jego składową są instrukcje działające na danych. - PowerPoint PPT Presentation

TRANSCRIPT

Page 1: Wykład  12

Wykład 12

Informatyka

PDF

Page 2: Wykład  12

Podstawowe cechy programowania

obiektowego

Page 3: Wykład  12

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 (także modułów) w celu uproszczenia zarządzania i kontroli nad programem, lecz nie zmienia to podstawowej koncepcji.

Page 4: Wykład  12

■ dane są powszechnie dostępne – łatwo o błędy,■ sekwencyjność wykonywania programu,■ wszystkie sytuacje trzeba przewidywać

i obsługiwać,■ konieczność testowania po każdej zmianie,■ wiele instrukcji, obszerny kod, trudność

zrozumienia algorytmu

Wady programowania strukturalnego

Page 5: Wykład  12

Zauważono „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ść.

Poza tym powstały interfejsy graficzne (Windows)!

Korzenie technologii obiektowej – lata 60-te, Nygaardi Dohl, Simula 1, Simula67 (1967).

Page 6: Wykład  12

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

Obiekty (świata rzeczywistego a także systemu operacyjnego komputera – plik, ikona, przycisk, okno) – mają swoje właściwości statyczne (nazwa, kolor itp.) a także zbiory operacji na nich czy przez nie wykonywanych.

Page 7: Wykład  12

nie określa się jednak 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).

■      wymiar

■      rozmiar

■      typ przechowywanych danych

Np. typ tablica ma swoje cechy – atrybuty:

Page 8: Wykład  12

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

Page 9: Wykład  12

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ą.

PROGRAMOWANIE OOP – podstawowe pojęcia

„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

Page 10: Wykład  12

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

Page 11: Wykład  12

Łatwo zrozumieć pojęcia materialne, trudniej abstrakcyjne.Przenikanie i wzajemna zależność pojęć.

Typy: Obiekty:

wyrób japoński,

 

 

magnetowid

kamera SONY,

magnetowid Panasonic

Toyota Celica

urządzenie do rejestracji obrazu,

Page 12: Wykład  12

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.

Obiekty mogą należeć do różnych klas, np.

pracownik, kobieta, mężczyznaJan, Ewa, Zenon, Jerzy

obiekty:

Może być brak obiektów w klasie (np. klasa perpetuum mobile, samochód napędzany wodą)

klasy:

Page 13: Wykład  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

Page 14: Wykład  12

TObject

TPersistent

TGraphic TComponent TCanvas TPicture TStrings

TGraphicControl

TMenuItem TMenu TControlTScreen TGlobalComponent

TWinControl TApplication

TCustomEdit TCustomComboBox TCustomListBox TButtonControl

TCustomControl TScrollingWinControl

TFormformularza - "okno" Windows

rodzic

potomek

Page 15: Wykład  12

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.

Page 16: Wykład  12

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.

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.

Czyli typ obiektowy to typ rekordowy poszerzony o metody

Page 17: Wykład  12

DZIEDZICZENIE

• niezależny, (zdefiniowany podobnie jak typ rekordowy) – rodzic drzewa

• 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).

Typ obiektowy może on być:

Page 18: Wykład  12

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.

POLIMORFIZM

Page 19: Wykład  12

Dziedziczność bezpośrednia – przodek jest niezależny (sam nie ma przodka)Dziedziczność pośrednia – przodek już dziedziczy (sam ma przodka)

Wzajemne zależności obiektów układają się w drzewo hierarchii obiektów.

type polozenie = class {obiekt niezależny}x:integer;y:integer;

end;

punkt = class (polozenie) {obiekt potomny}widocznosc: Boolean;

end;

Przykład:

Page 20: Wykład  12

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

.. identycznie jak w zmiennych rekordowych

Page 21: Wykład  12

type polozenie = class {obiekt niezależny}x:integer;y:integer;procedure przesun (nx, ny: Integer);

end;

procedure polozenie.przesun(nx, ny: Integer); begin

x:=nx;y:=ny;

end;

Przykład:

Page 22: Wykład  12

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

Page 23: Wykład  12

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 w innym module, umieszczonym na liście USES

Protected - pola i metody dostępne tylko dla potomków

Page 24: Wykład  12

Tworzenie własnego typu obiektowego (klasy)

type TPunkt = class public x:Integer; y:Integer; procedure przesun(dx,dy:Integer);

constructor Create(Sender: TObject);destructor Destroy;override;

end; //koniec definicjivarp:TPunkt;

Definicja klasy

Przykład

Page 25: Wykład  12

constructor TPunkt.create(Sender:TObject);//konstruktor

begin

inherited create;

end;

destructor TPunkt.destroy; //destruktor

begin

inherited destroy;

end;

procedure TPunkt.przesun(dx, dy: Integer);

begin

x:=x+dx;

y:=y+dy;

end;

Page 26: Wykład  12

procedure TForm1.Button1Click(Sender: TObject);begin p:=TPunkt.create(self); p.x:=30; p.y:=40; edit1.Text:=IntToStr(p.x); edit2.Text:=IntToStr(p.y);end;

procedure TForm1.Button2Click(Sender: TObject);begin p.przesun(4,4); edit1.Text:=IntToStr(p.x); edit2.Text:=IntToStr( p.y);end;

Page 27: Wykład  12

STRUKTURY DYNAMICZNE

Cel podstawowy – oszczędność pamięci

Do zbioru (uporządkowanego według określonej metody) możemy dołączać nowe elementy.

Rozmiar zbioru nie jest zdefiniowany, każde dołączanie nowego elementu powoduje nową rezerwację pamięci.

Pobieranie elementu (usuwanie), dołączanie nowego – mogą być obarczone pewnymi kryteriami dostępu.

Page 28: Wykład  12

Lista jednokierunkowa

dane

adres dane

adres dane

adres dane

nil

koniec

musi być znane wskazanie (adres) p początku listy

Page 29: Wykład  12

type

TypDanych = String[44];

Wskaznik =^ElementListy;

ElementListy = record

D : TypDanych;

Nastepny : Wskaznik

end;

typ "wskaźnikowy"

Jest to definicja rekurencyjna, bo:

wcześniej jest definiowany typ wskaźnikowy, korzystający z nieznanej jeszcze definicji elementu listy

następnie jest definiowany rekord, którego jedno z pól jest wcześniej definiowanego typu wskaźnikowego

Page 30: Wykład  12

Lista jednokierunkowa może być "w przód" lub "wstecz", czyli element może zawierać wskaźnik na następny lub poprzedni element.

Tworzenie nowego elementu polega na stworzeniu nowego początku, czyli:

var

q : Wskaznik;

begin

New (q); { Tworzymy nowy element, na razie nie związany z listą }

q^.N := p; { będzie on wskazywal na stary "początek" }

p := q; { teraz początkiem jest stworzony element}

q^.D := Dane {wpisujemy dane, które będą w nim przechowywane }

end;

Page 31: Wykład  12

Lista dwukierunkowaliniowo uporządkowany zbiór składników, w którym dla każdego składnika, poza pierwszym i ostatnim, jest określony składnik poprzedni i następny. Dla ostatniego składnika listy dwukierunkowej jest określony tylko składnik poprzedni, a dla pierwszego tylko następny.

Inne struktury dynamiczne

dane

wskaźnik na poprzedni

wskaźnik na następny

Page 32: Wykład  12

Stos (stack) to struktura danych, składająca się z liniowo uporządkowanych zbiorów składników (elementów), z których tylko ostatnio dołączony jest w danej chwili dostępny.

Miejsce dostępu to wierzchołek stosu. Jest to jedyne miejsce, do którego można dołączyć lub z którego można usunąć elementy.

FILO lub LIFO

first in – last out

last in - first out

Page 33: Wykład  12

jest strukturą danych, składającą się z liniowo uporządkowanych zbiorów składników, do której można dołączyć składnik tylko na jednym końcu (koniec kolejki), a usunąć tylko w drugim końcu (początek kolejki).

Powiązanie między składnikami kolejki jest takie samo jak pomiędzy składnikami stosu.

FIFO

first in – first out

Kolejka (queue)

Page 34: Wykład  12

jest strukturą danych, składającą się nieliniowo uporządkowanych zbiorów składników.Do każdego składnika można dołączyć jeden lub dwa składniki. Drzewo ma swój "korzeń" z którego wyrasta struktura.

Drzewo binarne

Drzewo binarne, w którym liczba synów każdego wierzchołka wynosi albo zero albo dwa, nazywane jest drzewem regularnym

danewsk_lewewsk_prawe

danewsk_lewenil

danewsk_lewewsk_prawe

danenilnil

danenilnil

danenilnil