Informatyka PDF Wykład 12.

Slides:



Advertisements
Podobne prezentacje
C++ wykład 2 ( ) Klasy i obiekty.
Advertisements

Programowanie obiektowe
Programowanie obiektowe
Programowanie obiektowe
Dynamiczne struktury danych Listy, Kolejki, Stosy
PROGRAMOWANIE STRUKTURALNE
PROGRAMOWANIE STRUKTURALNE
Elementarne struktury danych Piotr Prokopowicz
Programowanie obiektowe w Javie
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 7: Procedury i funkcje © Jan Kaczmarek.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 8: Wykorzystanie procedur i funkcji © Jan Kaczmarek.
Materiały do zajęć z przedmiotu: Narzędzia i języki programowania Programowanie w języku PASCAL Część 6: Tablice, rekordy, zbiory.
Kurs Pascala – spis treści
Struktury.
C++ wykład 2 ( ) Klasy i obiekty.
Zasady zaliczenia Warunki uzyskania zaliczenia:
Pakiety i ATD 1 Definicja. Pakietem albo jednostką programową nazywamy grupę logicznie powiązanych elementów, które mogą być typami, podtypami, obiektami.
Programowanie zorientowane obiektowo 1 Programowanie zorientowane obiektowo (object-oriented programming) jest to metodologia programowania bazująca na.
Dynamiczne struktury danych 1
Wykład 8 Wojciech Pieprzyca
Wykład 2 struktura programu elementy języka typy zmienne
Programowanie Komputerów
1 Języki i techniki programowania prowadzący dr Grzegorz Filipczyk.
Wstęp do programowania obiektowego
Projektowanie i programowanie obiektowe II - Wykład IV
Projektowanie i programowanie obiektowe II - Wykład II
Typy wskaźnikowe, dynamiczne struktury danych
Podstawy programowania
Podstawy programowania II
Podstawy programowania II
Obiekty dynamiczne Tworzenie klas 3 MPDI Programowanie obiektowe W4.
Operacje na strukturach listowych
Funkcje w Pascalu Przypomnienie wiadomości o procedurach Prowadzący: Anna Kaleta Piotr Chojnacki.
T: Różnice pomiędzy programowaniem strukturalnym a obiektowym
Źródła: podręcznikopracował: A. Jędryczkowski.
Podstawy programowania
1 Wykład 8 Podprogramy. 2 Pojęcie i istota stosowania dzielenie programu na części (logicznie spójne) - nazwane - niezależne od pozostałych części - z.
Jakub Wołczko W obiektowym świecie… Jakub Wołczko
Programowanie obiektowe – zastosowanie języka Java SE
WPROWADZENIE W ŚWIAT OBIEKTÓW
Java – coś na temat Klas Piotr Rosik
Dziedziczenie Maciek Mięczakowski
Inicjalizacja i sprzątanie
Programowanie obiektowe Wykład 3 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/21 Dariusz Wardowski.
Programowanie obiektowe Wykład 6 dr Dariusz Wardowski, Katedra Analizy Nieliniowej, WMiI UŁ 1/14 Dariusz Wardowski.
Koncepcja procesu Zadanie i proces. Definicja procesu Process – to program w trakcie wykonywania; wykonanie procesu musi przebiegać w sposób sekwencyjny.
Programowanie obiektowe – język C++
Programowanie obiektowe 2013/2014
ZWIĄZKI MIĘDZY KLASAMI KLASY ABSTRAKCYJNE OGRANICZENIA INTERFEJSY SZABLONY safa Michał Telus.
Modelowanie obiektowe Diagramy klas
Programowanie w języku C++
Projektowanie stron WWW
Interakcja człowiek – komputer Podstawy metod obiektowych mgr inż. Marek Malinowski Zakład Matematyki i Fizyki Wydz. BMiP PW Płock.
Treści multimedialne - kodowanie, przetwarzanie, prezentacja Odtwarzanie treści multimedialnych Andrzej Majkowski informatyka +
Programowanie strukturalne i obiektowe C++
Model obiektowy bazy danych
Systemy informatyczne wprowadzenie
Projektowanie obiektowe. Przykład: Punktem wyjścia w obiektowym tworzeniu systemu informacyjnego jest zawsze pewien model biznesowy. Przykład: Diagram.
Programowanie Zaawansowane
Podsumowanie wiedzy MPDI2 sem.3 INFORMATYKA. tworzenie nowego pliku i katalogu, nawigacja po katalogach, listowanie zawartości katalogu, zmiana nazw,
Wykład 11 Informatyka MPDI Podprogramy Zmienne typu zbiorowego Rekurencja Typ obiektowy Zmienne dynamiczne.
Partnerstwo dla Przyszłości 1 Lekcja 28 Dziedziczenie i rodzaje dziedziczenia.
ASP.NET Dostęp do bazy danych z poziomu kodu Elżbieta Mrówka-Matejewska.
Matlab - obliczenia statystyczne Rekurencja Inne typy danych Wykład 5 INFORMATYKA 2 MPZI2 sem. 4 1.
Programowanie Obiektowe – Wykład 6
T. 18. E Proces DGA - Działania (operatorka).
Klasy, pola, obiekty, metody. Modyfikatory dostępu, hermetyzacja
Programowanie Obiektowe – Wykład 2
PGO Dziedziczenie Michail Mokkas.
Modele baz danych - spojrzenie na poziom fizyczny
Zapis prezentacji:

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

Wady programowania strukturalnego ■ 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

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, Nygaard i Dohl, Simula 1, Simula67 (1967).

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.

Np. typ tablica ma swoje cechy – atrybuty: ■      wymiar ■      rozmiar ■      typ przechowywanych danych 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).

■ funkcje przetwarzania parametrów obiektów 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

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

(Encja = byt pojęciowy, konceptualny) 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

Ł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

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

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

TScrollingWinControl TObject TPersistent TGraphic TComponent TCanvas TPicture TStrings TGraphicControl TMenuItem TMenu TControl TScreen TGlobalComponent TWinControl TApplication TCustomEdit TCustomComboBox TCustomListBox TButtonControl TCustomControl TScrollingWinControl TForm rodzic potomek formularza - "okno" Windows

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.

metody (methods) – procedury i funkcje wykonywane na polach. 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 obiekcie w 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

DZIEDZICZENIE Typ obiektowy może on być: 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).

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.

Dziedziczność pośrednia – przodek już dziedziczy (sam ma przodka) 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;

nazwa_typu_obiektowego . nazwa_metody 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

type polozenie = class {obiekt niezależny} x:integer; y:integer; Przykład: 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;

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

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

Tworzenie własnego typu obiektowego (klasy) Przykład Tworzenie własnego typu obiektowego (klasy) Definicja klasy type TPunkt = class public x:Integer; y:Integer; procedure przesun(dx,dy:Integer); constructor Create(Sender: TObject); destructor Destroy;override; end; //koniec definicji var p:TPunkt;

constructor TPunkt.create(Sender:TObject);//konstruktor begin inherited create; end; destructor TPunkt.destroy; //destruktor inherited destroy; procedure TPunkt.przesun(dx, dy: Integer); x:=x+dx; y:=y+dy;

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); p.przesun(4,4); edit2.Text:=IntToStr( p.y);

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.

Lista jednokierunkowa dane adres dane adres dane adres dane nil koniec musi być znane wskazanie (adres) p początku listy

Wskaznik =^ElementListy; ElementListy = record D : TypDanych; 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

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;

Inne struktury dynamiczne Lista dwukierunkowa liniowo 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. dane wskaźnik na poprzedni wskaźnik na następny

Stos (stack) FILO lub LIFO 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

Kolejka (queue) 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

Drzewo binarne 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. dane wsk_lewe wsk_prawe dane dane wsk_lewe wsk_lewe nil wsk_prawe dane dane dane nil nil nil nil nil nil Drzewo binarne, w którym liczba synów każdego wierzchołka wynosi albo zero albo dwa, nazywane jest drzewem regularnym