end
Transkrypt
end
Literatura A. Daniluk – ABC Delphi 7, Helion, 2003, W. Kwasowiec – Wprowadzenie do Object Pascal i Delphi, Mikom 2001, A. Synarska – Delphi od podstaw, Edition 2001, N. Wirth – Algorytmy + struktury danych = programy, WNT 2002, M. Iglewski – PASCAL język wzorcowy, Pascal 360, WNT 1984. X. Pacheco, S. Teixeira – Delphi 6. Vademecum Profesjonalisty, tom I i II, Helion 2002, T. Pamuła – Aplikacje w Delphi. Przykłady, Helion 2003, T. M. Sadowski – Praktyczny kurs Delphi, Helion 2003. Techniki programowania I s.1-1 Podstawy programowania w Delphi pojęcia podstawowe programowanie obiektowe i sterowane zdarzeniami najważniejsze cechy środowiska Delphi komponenty: własności i zdarzenia Techniki programowania I s.1-2 Pojęcia podstawowe Algorytm – przepis postępowania prowadzący do rozwiązania określonego zadania; zbiór poleceń określających sposób przetwarzania zbioru danych ze wskazaniem kolejności w jakiej mogą być wykonane. Język programowania – sformalizowany język opisu algorytmów przeznaczonych do wykonywania przez komputer. Język niskiego poziomu – język programowania zawierający polecenia odzwierciedlające listę wewnętrzną rozkazów komputera. Język wysokiego poziomu – niezwiązany z określonym typem komputera, wykonanie programu wymaga wcześniejszego przetłumaczenia przy pomocy odpowiedniego translatora. Programowanie – konstruowanie programów i przygotowanie ich do eksploatacji; kodowanie algorytmów w danym języku programowania. Program – algorytm zapisany w określonym języku programowania wraz ze strukturami danych na których operuje. Program jest przepisem wyrażonym w odpowiedniej notacji według którego komputer lub inne urządzenie interpretujące wykonuje czynności przewidziane w algorytmie. Techniki programowania I s.1-3 Programowanie obiektowe, programowanie zdarzeniowe Programowanie obiektowe (OOP, object-oriented programming) – programowanie, zazwyczaj w obiektowym języku programowania, które polega na wyodrębnieniu obiektów, ich klas oraz metod. Każdy obiekt traktowany jest jako samodzielny, zamknięty fragment kodu, a funkcjonowanie programu opiera się na komunikacji i współpracy pomiędzy obiektami. Programowanie sterowane zdarzeniami (event-driven programming) – technika programowania polegająca na wyróżnieniu tzw. zdarzeń zachodzących w środowisku programu (np. naciśnięcie klawisza, kliknięcie myszką, itp.) i przyporządkowaniu tym zdarzeniom określonych sekwencji instrukcji. Dana sekwencja jest uruchamiana przez środowisko w którym funkcjonuje program (zazwyczaj system operacyjny) w momencie wystąpienia odpowiadającego jej zdarzenia. Powyższe pojęcia nie są ze sobą związane (programowanie zdarzeniowe nie wymaga programowania obiektowego i odwrotnie). OOP określa pewną cechę narzędzia, którym posługuje się programista tworzący aplikację, programowanie zdarzeniowe to cecha środowiska, w którym funkcjonuje aplikacja i które musi wspierać narzędzie do jej tworzenia. Techniki programowania I s.1-4 Programowanie obiektowe, programowanie zdarzeniowe Okno programu własności metody własności metody Przycisk Anuluj Baza danych własności metody Aplikacja Przycisk OK własności metody procedura1 instrukcja instrukcja …… instrukcja Pole tekstowe zdarzenie własności metody klawiatura procedura2 instrukcja instrukcja …… instrukcja zdarzenie ruch myszy procedura3 instrukcja instrukcja …… instrukcja zdarzenie przycisk Środowisko Rys. 5.1. Program obiektowy Rys. 5.2. Program sterowany zdarzeniami Zbiór powiązanych obiektów opisujących rzeczywiste elementy lub procesy. Każdy obiekt stanowi zamkniętą całość i ma ściśle przypisane kompetencje. Działanie programu opiera się na współpracy pomiędzy obiektami. Uruchomiona aplikacja określa typy zdarzeń, na które będzie reagować i procedury związane z określonymi zdarzeniami. Nie podejmuje żadnych działań dopóki nie będzie otrzyma informacji o zdarzeniu wygenerowanej przez środowisko. Techniki programowania I s.1-5 Zintegrowane środowisko programistyczne, RAD Zintegrowane środowisko programistyczne - Aplikacja lub zespół aplikacji służących do tworzenia, testowania i konserwacji oprogramowania Funkcje zintegrowanego środowiska programistycznego: • Edycja kodu źródłowego • Kompilacja kodu źródłowego (zamiana programu na kod binarny) • Tworzenie zasobów programu (formularze, okna dialogowe, menu, raporty, itp.) • Budowa własnych komponentów • ………… RAD - Rapid Application Development, błyskawiczne tworzenie aplikacji; technologia polegająca na udostępnieniu programiście zestawu gotowych składników (komponentów) ułatwiających i przyspieszających tworzenie szkieletu aplikacji. Wygląd aplikacji (interfejs użytkownika) projektuje się ustawiając komponenty w obszarze okna projektowanego programu (np. przy użyciu myszy), a stworzenie typowych funkcji wymaga napisania zaledwie kilku wierszy kodu. Techniki programowania I s.1-6 Delphi Delphi – zintegrowane środowisko programistyczne typu RAD, przeznaczone do tworzenia aplikacji dla Microsoft Windows (programów sterowanych zdarzeniami), wykorzystujące język Object Pascal (obiektowy język programowania). Historia: • Borland Delphi 1.0 (1995) – wersja 16-bitowa, Windows 3.1 • Borland Delphi 2.0 (1996) – wersja 32-bitowa, Windows 95, Windows NT • CodeGear Delphi 2007 – pierwszy produkt firmy-córki CodeGear • CodeGear Delphi 2009 – pierwszy produkt po zmianie właściciela (Embarcadero) • Wersja aktualna (luty. 2013) – CodeGear Delphi XE3 Wersje pakietu: • Personal (dawniej desktop lub standard) – najmniejsza funkcjonalność, brak zaawansowanych komponentów, od wersji 5.0 brak obsługi baz danych • Professional – obsługa baz danych, elementy aplikacji internetowych • RAD Studio, Enterprise, Architect (dawniej client-server) – kompletny pakiet, obsługa baz danych typu client-server, rozproszone bazy danych, dostęp do najnowszych technologii, wsparcie etapu modelowania i projektowania. Techniki programowania I s.1-7 Środowisko Borland Delphi pasek narzędziowy Delphi struktura projektu (obiekty wchodzące w skład aplikacji) główne okno Delphi palety komponentów okno edycji kodu aplikacji inspektor obiektów Formularz (okno) projektowanej aplikacji Techniki programowania I s.1-8 Lazarus Lazarus to wzorowane na Delphi, zintegrowane środowisko programistyczne oparte na kompilatorze Free Pascal, wyposażone w bibliotekę komponentów LCL. Program jest udostępniany na licencji GNU GPL, biblioteki na zmodyfikowanej licencji LGPL. Podstawowe cechy: • zgodność ze środowiskiem Delphi, • zgodność programów tworzonych w Delphi i Lazarusie na poziomie kodu źródłowego (w większości przypadków), • odpowiedniki standardowych komponentów Delphi w bibliotece LCL, • import projektów utworzonych w Delphi (w większości przypadków), • polska wersja językowa, • wieloplatformowość – możliwość kompilowania projektu na każdej platformie obsługiwanej przez Free Pascal (win32/64, Unix, MacOS X, Windows CE). Strona projektu Lazarus: http://www.lazarus.freepascal.org/ Techniki programowania I s.1-9 Środowisko Lazarus pasek narzędziowy struktura projektu (obiekty wchodzące w skład aplikacji) główne okno programu palety komponentów okno edycji kodu aplikacji inspektor obiektów formularz (okno) projektowanej aplikacji Techniki programowania I s.1-10 Środowisko Borland Delphi – palety komponentów Komponenty to elementy, z których budowany jest interfejs aplikacji. Są dostarczone w postaci gotowej do użycia, wymagają jedynie ustawienia własności i zaprogramowania reakcji na zdarzenia odpowiadające konkretnym funkcjom aplikacji. Komponenty to szczególny przypadek obiektów. Standard: podstawowe składniki aplikacji (menu, przyciski pola wyboru, itp..) Additional: rozwinięcie i uzupełnienie komponentów standardowych Win32: składniki aplikacji wprowadzone w 32-bitowych wersjach Windows System: multimedia, OLE i DDE Dialogs: standardowe okna dialogowe Techniki programowania I s.1-11 Środowisko Borland Delphi – inspektor obiektów Inspektor obiektów pozwala na ustalanie cech składników aplikacji (zakładka właściwości – properties) oraz zarządzanie metodami, które stanowią odpowiedź na wybrane zdarzenia (zakładka zdarzenia – events). Właściwości – cechy określające wygląd komponentu (kolor, rodzaj czcionki, etykieta, itp.) Zdarzenia – komunikaty generowane przez system operacyjny informujące o działaniach podejmowanych przez system, użytkownika, inne aplikacje (np. kliknięcie myszą, naciśnięcie klawisza, zamknięcie okna, uruchomienie programu, itp.) Techniki programowania I s.1-12 Środowisko Borland Delphi – rodzaje własności Wartość wprowadzana z klawiatury Wartość wybierana z listy Wartość złożona określana przy pomocy okna dialogowego Wartość złożona – kilka składników dostępnych po kliknięciu na (+) Techniki programowania I s.1-13 Własności wspólne dla wielu komponentów Name – nazwa, kluczowa własność wszystkich komponentów, unikalny identyfikator jednoznacznie określający komponent; używane we wszystkich odwołaniach do komponentu; domyślnie: nazwa komponentu zakończona liczbą. Caption – wyświetlany tekst, występuje we wszystkich komponentach, które są opisane przy pomocy tekstu (przyciski, etykiety, pola wyboru, itp.); znak "&" umieszczony w tekście tworzy klawisz szybkiego wyboru (hot key). Color – kolor, wartości wybierane z listy; kolor komponentu. Font – czcionka, własność wszystkich komponentów widocznych w czasie działania aplikacji; rodzaj czcionki (nazwa, rozmiar, styl, itp.) używanej do wyświetlania tekstu wewnątrz komponentu. Left, Top, Height, Width – położenie i wymiary komponentu, własność wszystkich komponentów widocznych w czasie działania aplikacji; położenie lewego górnego narożnika (Left, Top) oraz wysokość i szerokość (Height, Width) w pikselach. Enabled – dostępność, własność wszystkich komponentów aktywnych; umożliwia zablokowanie komponentu. Visible – widoczność, własność wszystkich komponentów widocznych w czasie działania aplikacji; umożliwia ukrycie komponentu. Techniki programowania I s.1-14 Przykładowa aplikacja Program wyświetla okno komunikatu zawierające ciąg znaków wprowadzony przez użytkownika w polu tekstowym umieszczonym na głównym formularzu aplikacji Etykieta "Label1" Formularz "Form1" Pole tekstowe "Edit1" Przycisk "Button1" Okno komunikatu "ShowMessage" Procedura obsługi zdarzenia OnClick, przycisku Button1 procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage(Edit1.Text); end; ShowMessage(…) – standardowa funkcja wyświetlająca okno z komunikatem Edit1.Text – odwołanie do ciągu znaków wprowadzonego w polu tekstowym Pełny kod programu dostępny na stronie przedmiotu Techniki programowania I s.1-15 Komponent Label Zastosowanie Wyświetla statyczny tekst, zazwyczaj opisuje inne elementy formularza, może być wykorzystany do wyświetlenia wyniku Wybrane własności (properties) Wszystkie omówione na s.1-14; Caption – tekst wyświetlany przez etykietę, łańcuch znakowy; FocusControl – wskazuje komponent opisywany przez etykietę; wybór etykiety spowoduje uaktywnienie wskazanego komponentu. Wybrane zdarzenia (events) OnClick – pojedyncze kliknięcie na etykiecie; OnDblClick – podwójne kliknięcie na etykiecie; OnMouseMove – przesunięcie kursora nad etykietą; OnMouseDown, OnMouseUp – przyciśnięcie i zwolnienie przycisku myszy gdy kursor znajdował się nad etykietą. Techniki programowania I s.1-16 Komponent Edit Zastosowanie Podstawowy komponent umożliwiający wprowadzanie danych w czasie działania aplikacji. Wybrane własności (properties) Wszystkie omówione na s.1-14 z wyjątkiem Caption; MaxLength – maksymalna długość tekstu (zero oznacza brak ograniczeń); ReadOnly – tylko do odczytu, ustawienie własności blokuje edycję danych; Text – wartość wprowadzona w polu edycyjnym. Wybrane zdarzenia (events) OnChange – zmiana wartości wprowadzonej w polu edycyjnym; OnEnter, OnExit – wejście, wyjście; występują odpowiednio po wybraniu elementu (aktywacja) i wyjściu z elementu (przejście do innego elementu formularza); OnKeyPress – naciśnięcie klawisza na klawiaturze podczas edycji danych w polu (występuje przed wyświetleniem wartości na ekranie); Wszystkie zdarzenia omówione przy komponencie Label. Techniki programowania I s.1-17 Komponent Button Zastosowanie Steruje pracą aplikacji, podstawowy komponent umożliwiający uruchomienie wybranej funkcji w czasie działania programu Wybrane własności (properties) Wszystkie omówione na s.1-14; Caption – tekst opisujący przycisk, łańcuch znakowy; Cancel – anuluj, po ustawieniu naciśnięcie klawisza Escape uruchamia funkcję przycisku nawet jeżeli nie jest w danej chwili wybrany; Default – przycisk domyślny, po ustawieniu naciśnięcie klawisza Enter uruchamia funkcję przycisku nawet jeżeli nie jest w danej chwili wybrany. Wybrane zdarzenia (events) OnClick – kliknięcie; zdarzenie występuje przy każdym wciśnięciu przycisku (przy pomocy myszy i klawiatury); Pozostałe zdarzenia omówione przy komponencie Label. Techniki programowania I s.1-18 Komponent Form (formularz) Zastosowanie Okno aplikacji, okna pomocnicze, podstawowy pojemnik na wszystkie komponenty Wybrane własności (properties) Wszystkie omówione na s.1-14; BorderIcons – przyciski widoczne w pasku tytułowym, własność złożona; biSystemMenu – menu systemowe, biMinimize – minimalizacja, biMaximize – maksymalizacja, biHelp - pomoc BorderStyle – styl obramowania, wartość wybierana z listy; bsDialog – okno dialogowe, stały rozmiar bez min. i max., bsNone – brak obramowania i tytułu, bsSingle – stały rozmiar z min. i max., bsSizable – zmienna rozmiary Wybrane zdarzenia (events) OnCreate, OnClose – utworzenie i zamknięcie formularza; OnResize – zmiana rozmiarów formularza; Wszystkie zdarzenia omówione przy komponencie Label. Techniki programowania I s.1-19 Struktura procedury zdarzenia Procedura obsługi zdarzenia jest generowana automatycznie po dwukrotnym kliknięciu na nazwie zdarzenia w Inspektorze Obiektów (zakładka "Events"). Delphi tworzy nagłówek umieszczony w kodzie klasy formularza, oraz definicję procedury umieszczoną w części implementacyjnej modułu (wykład 1., strona 15.). Definicję procedury należy uzupełnić kodem, wykonywanym podczas wystąpienia zdarzenia. Schemat definicji procedury: procedure klasa_formularza.nazwa_procedury(argumenty); begin miejsce na kod procedury end; procedure jest słowem kluczowym języka, które oznacza początek nagłówka. argumenty pozwalają przekazywać dodatkowe informacje do procedury. begin i end (ze średnikiem) to słowa kluczowe, które określają odpowiednio początek i koniec kodu. Nazwa procedury zdarzenia składa się z nazwy komponentu, do którego zdarzenie jest przypisane i właściwej nazwy zdarzenia, np.: Button1Click (zdarzenie OnClick przypisane do komponentu Button1). Techniki programowania I s.1-20 Odwołania do własności w kodzie programu Odwołanie do zwykłej własności nazwa_komponentu.nazwa_własności gdzie: nazwa_komponentu to wartość własności Name, nazwa_własności to nazwa jednej z własności dostępnych dla tego komponentu. Przykład Label1.Caption – odwołanie do wartości wyświetlanej przez etykietę Label1 Edit1.Text – odwołanie do wartości wprowadzonej w polu tekstowym Edit1 Odwołanie do własności złożonej nazwa_komponentu.nazwa_własności.nazwa_składnika gdzie: nazwa_składnika to nazwa elementu składowego danej własności. Przykład Label1.Font.Name – odwołanie do nazwy czcionki etykiety Label1, Label1.Font.Size – odwołanie do rozmiaru czcionki etykiety Label1. Techniki programowania I s.1-21 Organizacja projektu w Delphi Każda aplikacja utworzona w Borland Delphi składa się z wielu elementów: formularzy, kodów, modułów, zasobów, dodatkowych bibliotek, itp. Przyjęto zasadę, że każdy z elementów składowych programu przechowywany jest w osobnym pliku. W większości wypadków pliki te tworzone są automatycznie. Pliki źródłowe projektu aplikacji: • .dpr – główny plik projektu, zawiera informacje o wszystkich składnikach projektu • .res – pliki zasobów programu (np. ikony), z każdym projektem związany jest jeden, automatycznie tworzony plik .res o nazwie takiej samej jak projekt • .pas – kody źródłowe modułów • .dfm – definicje formularzy, każdy związany jest z plikiem .pas o tej samej nazwie • .cfg – ustawienia opcji kompilatora • .dfo – konfiguracja środowiska Delphi (układ okien, ustawienia opcji, itp.) Pliki tworzone w czasie kompilacji i pracy z projektem: • .~dpr, .~dfm, .~pas – kopie zapasowe (poprzednie wersje) plików • .dcu – skompilowane moduły programu (formularze i pozostałe pliki .pas) • .exe – wykonywalny plik wynikowy Techniki programowania I s.1-22 Kod projektu (plik "dpr") program Project1; początek programu (nagłówek) uses Forms, Unit1 in 'Unit1.pas' {Form1}; dołączone moduły standardowe oraz moduły formularzy begin Application.Initialize; inicjalizacja aplikacji Application.CreateForm(TForm1, Form1); utworzenie formularza Application.Run; uruchomienie aplikacji end. część operacyjna programu {$R *.res} Techniki programowania I s.1-23 Kod modułu formularza (plik "pas") var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); begin ShowMessage(Edit1.Text); end; end. początek modułu (nagłówek) dołączone moduły standardowe komponenty formularza deklaracje procedur obsługi zdarzeń kod dodawany przez programistę definicja klasy formularza unit Unit1; interface uses Windows, Messages, SysUtils …; type TForm1 = class(TForm) Label1 : TLabel; Edit1 : TEdit; Button1: TButton; procedure Button1Click(Sender: TObject); private public end; deklaracja zmiennej reprezentującej formularz definicja (właściwy kod) procedur obsługi zdarzeń koniec modułu Techniki programowania I s.1-24 Typy własności Każda własność ma określony typ, który określa zbiór wartości jakie może dana własność przyjmować. Każda próba nadania wartości niezgodnej z typem własności zakończy się błędem podczas kompilacji. Podstawowe typy własności: integer – typ całkowity o zakresie (-2147483648..2147483647) real – typ rzeczywisty o zakresie (2.9e-39..1.7e38, 11-12 cyfr znaczących) boolean – typ logiczny (dwie wartości: true – prawda i false – fałsz) char string – typ znakowy (pojedynczy znak) – typ łańcuchowy (ciąg znaków o długości maksymalnej 255 znaków) Przykłady 127 – typ całkowity 127.5 – typ rzeczywisty 1.723e+01 – typ rzeczywisty (17.23) true – typ logiczny 'a' – typ znakowy 'xyz' – typ łańcuchowy Poza typami wymienionymi powyżej istnieją przypadki szczególne, gdy własności przyjmują wartości ze specjalnie zdefiniowanych zbiorów (np. własności formularza BorderIcons i BorderStyle na s.19). Techniki programowania I s.1-25 Instrukcja przypisania, zmiana własności Instrukcja przypisania nazwa_elementu := wyrażenie; Instrukcja przypisania nadaje pewnemu elementowy (np. własności) określoną wartość, typ przypisywanej wartości musi być zgodny z typem elementu. Przykłady instrukcji zmieniających własności komponentu o nazwie Label1: Przykład 1 – wyświetlany tekst Własność typu string, można do niej przypisać dowolny łańcuch znakowy. Label1.Caption := 'Wynik obliczeń: '; Przykład 2 – kolor czcionki Własność typu całkowitego, można przypisać liczbę lub jedną z predefiniowanych stałych reprezentujących kolor. Label1.Font.Color := 0; Label1.Font.Color := clBlack; Techniki programowania I s.1-26 Przykład 2. – zmiana własności w kodzie programu Program modyfikuje wygląd i opis etykiety: • Zielony, Niebieski – zmiana koloru, • Czcionka – zmiana czcionki na "Courier New" • Zmień tekst – zmiana opisu • Powiększ – zmiana rozmiaru do 14pt procedure TForm1.Button1Click(Sender:TObject); begin Label1.Font.Color := clGreen end; procedure TForm1.Button3Click(Sender:TObject); begin Label1.Font.Name := 'Courier New'; end; procedure TForm1.Button4Click(Sender:TObject); begin Label1.Caption := Edit1.Text end; Składniki własności Font • Color – kolor czcionki • Name – nazwa czcionki • Size – rozmiar czcionki Pełny kod programu dostępny na stronie przedmiotu jako "Przykład02" Techniki programowania I s.1-27