370 likes | 557 Views
3 MPDI. Programowanie obiektowe. 30 godzin w. 30 godzin lab EGZAMIN. Wykład 1. Zakres. Wprowadzenie do programowania zorientowanego obiektowo. Techniki obiektowe w Delphi. Obiekty VCL i ich zastosowanie. Tworzenie nowych klas i instancji – kreacja metod i ich wykorzystanie.
E N D
3MPDI Programowanie obiektowe 30 godzin w. 30 godzin lab EGZAMIN Wykład 1
Zakres • Wprowadzenie do programowania zorientowanego obiektowo. • Techniki obiektowe w Delphi. Obiekty VCL i ich zastosowanie. • Tworzenie nowych klas i instancji – kreacja metod i ich wykorzystanie. • Wprowadzenie do programowania w środowisku Java (Eclipse, NetBeans). • Cechy szczególne obiektowości Javy. • Konstruktory i destruktory, dziedziczenie. • Obiekty i klasy w Javie. • Obsługa wyjątków w Javie. • Obsługa zdarzeń w Javie. • Komponenty w Javie. Klasa Pane. • Aplet jako obiekt na stronie HTML.
Programowanie strukturalne (proceduralne) – to 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 • służy do nauki programowania • niewygodne • nie przystaje do obecnych systemów operacyjnych obiektowych (komponentowych)
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ść tworzeniaSI, a następnie ich wydajność. Poza tym powstały interfejsy graficzne (Windows)! Korzenie technologii obiektowej – lata 60-te, Nygaardi 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).
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) "klasy" KLASA=typ obiektowy=encja (entity) OBIEKT = reprezentacja w klasie =instancja
Podobnie jak typ zmiennej i zmienna typ integer klasa człowiek x y z przedstawiciele typu A B C instancje w klasie
"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ęć. Klasy: Obiekty: kamera SONY, wyrób japoński, urządzenie do rejestracji obrazu, magnetowid Panasonic magnetowid Toyota Celica
OBIEKTY – egzemplarze typów obiektowych (TO), instancje w klasie 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. klasy: pracownik, kobieta, mężczyzna obiekty: Jan, Ewa, Zenon, Jerzy
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
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ć: procedure nazwa_typu_obiektowego.nazwa_metody
Własność polegająca na dostępie do pól jedynie przy użyciu metod nazywa się hermetyzacją. Ułatwia kontrolę poprawności złożonych programów.
DZIEDZICZENIE 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).
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;
Przykład: type Tpolozenie = class{obiekt niezależny} x:integer; y:integer; procedure przesun (dx, dy: Integer); end; procedure Tpolozenie.przesun(dx, dy: Integer); begin x:=x+dx; y:=y+dy; end; tylko nagłówek opis metody
Jeśli mamy zdefiniowany typ (klasę) Tpolozenie …możemy wykorzystać… var p:Tpolozenie; //p to obiekt- instancja begin //nadanie wartości polom (w zależności od ich typu) p.x:=100; p.y:=30; //ale jeśli pola są prywatne, to możliwe tylko z użyciem metody p.przesun(100,50); … dostęp do pól (też metod) identyczny jak w zmiennych rekordowych, zapis z kropką
Środowiska programistyczne do tworzenia aplikacji "okienkowych" mają gotowe biblioteki typów obiektowych, np. TEdit, TMemo, TMenu, TCheckBox itp. var Edit1:TEdit; //instancja Edit1 przynależna do klasy TEdit W części wykonawczej nadanie wartości polu Edit1.Text:= 'jakiś tekst'; Wykonanie metody: Edit1.Clear;
Obsługa zdarzeń: Można zdefiniować obsługę zdarzenia dla obiektu – metodę obsługi: procedure TForm1.przycisk1Click (parametry); begin //nadanie wartości polu width obiektu Label1 etykieta1.width := 40; //wykonanie metody "Ukryj" dla obiektu Label2 etykieta2.hide ; end; przykład okienkowy
(OOP - Object Oriented Programming) • stosuje się rzeczywiste obiekty - abstrakcyjne typy danych • operacje programu dotyczą utworzonych w nim obiektów • dane traktowane są jako rzecz istotniejsza - procedury na drugim miejscu • istota wykonywania programu: • sterowane zdarzeniami (event_driven) • zdarzenie jest zjawiskiem mającym związek z obiektem: - naciśnięcie klawisza, - kliknięcie myszką, - wybranie opcji menu • program nie jest sekwencyjnie wykonywany - wystąpienie zdarzenia aktywizacja procedury obsługi (metody) - dalsze oczekiwanie na następne zdarzenie • praktyczna realizacja wspomagana przez system operacyjny, np. Windows
System Delphi • zintegrowane środowisko tworzenia aplikacji IDE (Integrated Development Environment) • środowisko RAD (Rapid Application Development) • język ObjectPascal • do tworzenia aplikacji z interfejsem użytkownika w stylu Windows (API - Application Programming Interface) z: - elementami okien Windows-ów - typową obsługą urządzeń wej/wyj • przykład 1: • dodajemy lub mnożymy dwie liczby • sterowanie z menu • przycisk koniec • kolor tła wg przycisków radiowych • kolor liczb wg przycisku wyboru
idea projektowania interaktywnego RAD interfejsu użytkownika GUI (Graphical User Interface) - wzorce powłoki aplikacji - komponenty formularzy - biblioteka procedur/funkcji systemowych • narzędzia pakietu programowania: - projektant formularzy - inspektor obiektów formularza bieżącego - przyciski komponentów wizualnych (biblioteka VCL) - edytor tekstu (treści) modułów (programu) - menu + narzędzia operacji: - współpraca z dyskami - tłumaczenie + wykonywanie (kompilator) - śledzenie + uruchamianie (debugger) - edycja obrazów • obsługa baz danych • elementy stron WWW
Modularna struktura programu Przykład gotowy : rozmowa
deklaracja stosowania modułów - uses lista_nazw_modułów; nazwa nazwa in 'plik.pas' Przykład: program rozmowa; {program główny - projekt} uses Forms, nad in 'nad.pas' {nadawca}, odb in 'odb.pas' {odbiorca}; begin Application.Initialize; Application.CreateForm(Tnadawca, nadawca); Application.CreateForm(Todbiorca, odbiorca); Application.Run; end.
Struktura prostego modułu Program - zapis operacji prowadzących do rozwiązania zadania • Struktura programu: - nagłówek - opis obiektów /część deklaracyjna, opisowa - zapis akcji /część operacyjna, akcyjna • Składowe: - deklaracje, definicje - instrukcje - komentarze - dyrektywy
struktura modułu: unit nazwa; // nagłówek} interface opis składowych modułu dostępnych na zewnątrz (uses, const, type, var, procedure, function) implementation opis składowych lokalnych oraz treści (działania) procedur i funkcji initialization // opcjonalnie begin ... end; finalization // opcjonalnie begin ... end; end.
odwołania do obiektów modułu - kwalifikowane: • np.: • Application.Initialize; • Application.CreateForm(Tnadawca, nadawca); • Application.Terminate; • procedure Tnadawca.sendTextClick(Sender: TObject); • odbiorca.outText.text := nadawca.inText.text • istota : - układ jednopoziomowy • składowe - zbiór procedur, funkcji (stałych, typów, zmiennych) • - w osobnych plikach - moduły są kompilowane oddzielnie - biblioteki postać półskompilowana *.dcu(Delphi compiled unit)
Pakiet programowania Projektant formularzy • dodawaniekomponentów graficznychz biblioteki VCL • wskazanie komponentu i kliknięcie w formularzu • kliknięcie w przycisk komponentu i kontur • podwójne kliknięcie • rozmieszczanie i zmiana rozmiarów komponentów: • indywidualnie • grupa komponentów (Shift + kliknięcie) lub kontur • + operacje menu kontekstowego Repertuar komponentów • standardowe + dodatkowe • okienka dialogowe • dostęp + obsługa + raporty baz danych • serwer i strony WWW
Inspektor obiektów - zmiana charakterystyki obiektów (właściwości) - programowanie zachowania (reakcje na zdarzenia) • wybór obiektu • wskazanie w formularzu • lista obiektów • typy właściwości • tekst (wpisywanie) • wybór z listy • właściwości strukturalne - rozwijanie lub okno ustawiania • właściwości mnogościowe - rozwijanie składowych • najważniejsze właściwości: • - nazwa obiektu (dla operacji) - name • - tytuł (nagłówek) - caption • - rozmiar - left, top, width, height - styl obramowania okna + paska nagłówka - borderStyle • - kolor - color • - czcionka - font • - menu kontekstowe - popupMenu • - etykieta - hint, showhint • obsługa zdarzeń (events) akcje - nazwy procedur - różne typy procedur
- nowa aplikacja, nowy formularz - otwórz projekt (*.dpr) - otwórz plik (moduł) - zapisz wszystko - zapisz plik (moduł) - zapisz projekt Edytor kodu • mechanizmy: • nawigacja • wstawianie, usuwanie, wycinki, schowek Wspomaganie pisania • uzupełnianie tekstu (wstawianie nazwy) Ctrl+spacja : - po kropce - wybieranie tekstem lub strzałkami • koniec: kropka, spacja, Enter, średnik, nawias • musi być poprawny początek • wstawianie wzorców Ctrl+J • podpowiedź o parametrach (Ctrl+Shift+spacja) System pomocy Help • zawartość • indeks
Tłumaczenie i wykonywanie programu okno komunikatów
Zasady tworzenia aplikacji • operowanie składowymi: - dodaj|usuń plik (moduł) do | z projektu - wybierz moduł | formularz z listy (Ctrl+F12, Shift+F12) - przełącz formularz | moduł (F12) - nowy formularz Reguły programowania • nazwy: • dobieranie nazw - znaczenie • skróty - Lista_studentow, Lta_stdntw, Lta_std • znak podkreślenia Lta_stud_mdf • styl wielbłądzi LtaStudMdf • struktura: • nowe deklaracje, definicje lub instrukcje - nowy wiersz • puste wiersze • odstępy - po przecinkach, średnikach, wokół operatorów