background image

 

 

Wprowadzenie do Object 

Pascal

W środowisku Delphi

background image

 

 

Programowanie 

(powtórka)

Asembler

Zalety i wady

Języki wysokiego poziomu

Delphi, C++, Basic, Java

Przyczyny popularności C++ (Microsoft Visual 

Studio, Borland C++ Builder)

Przyczyny popularności języka Basic (Visual Basic)

Przyczyny popularności języka Java (JDK, Visual 

Café)

Czemu Delphi?

Może PHP lub Pearl?

background image

 

 

Czym jest Delphi?

Przyczyny popularności Pascala (od lat 80tych)

Object Pascal

Delphi – środowisko tworzenia i uruchamiania 

programów w Object Pascalu

Narzędzie klasy RAD

Środowisko wizualne

Wersje

Personal Edition (

www.borland.pl

) - 85 komponentów

Professional – 255 komponentów

Enterprise (obsługa baz danych) – ponad 300 

komponentów

background image

 

 

Komponenty

Komponent – obiekt (graficzny) do budowy 

interfejsu, z biblioteki VCL

Interfejs – najważniejszy czy nie?

Projektant formularzy

Inspektor obiektów

Właściwości (wygląd i zachowanie komponentów)

Zdarzenia (akcje podejmowane po zajściu 

określonych wydarzeń)

Edytor kodu

PROJEKT == APLIKACJA

background image

 

 

Pliki Delphi

*.pas – pliki zawierające kod źródłowy modułów 

(w szczególności formularzy)

*.dfm – informacje o formularzach (np. o ich 

komponentach i usytuowaniu)

*.dcu – skompilowane pliki modułów

*.dpr – plik główny aplikacji

*.cfg – opcje Delphi (ustawienia kompilatora)

*.dof – opcje projektu

*.res – pliki z zasobami (ikona dla pliku 

wykonywalnego, obrazy graficzne zawarte w 

komponentach, multimedia)

background image

 

 

Struktura aplikacji

Program główny

W praktyce nieograniczona liczba modułów 

zapisanych w niezależnych plikach, w 

szczególności odpowiadających formularzom

Rola programu głównego

Podział kodu na moduły

Reguły podziału

Zalety

Moduł Windows.pas – WinAPI

Istota i zalety korzystania z WinAPI

background image

 

 

Komunikacja w trybie 

DOS

Dyrektywy kompilatora 
{$dyrektywa parametr}

Dyrektywa {$APPTYPE 
CONSOLE}

Konwencja Turbo Pascala

Komunikacja: readln, writeln

Przykład: Project1

background image

 

 

Plik projektu

Plik projektu (głównego modułu aplikacji) ma rozszerzenie .dpr

Jest punktem startowym i końcowym aplikacji

Składnia

program HelloWorld;
uses
  Forms,
  umain in ‘umain.pas’; {np. formularz}
{$R *.res}

begin
  Application.Initialize;
  Application.CreateForm(TForm1, Form1);
  Application.Run;
end.

background image

 

 

Budowa pliku kodu 

źródłowego

unit Unit1
interface
uses
  windows, messages, 

SysUtils, Classes, Graphics, 

Controls, Forms, Dialogs;

type
  TForm1 = class (TForm)
  private
  //private declarations
  public
  //public declarations
  end;

var
  Form1: TForm1;

implementation
{$R *.dfm}
initialization
//to musi wprowadzić 

programista

finalization //j.w.
end.

background image

 

 

Przykład

Skrajne rozdrobnienie na moduły

Plik główny (projektu)

Trzy moduły

Sygnatury (nagłówki) udostępnianych 
komponentów programu (aplikacji)

Implementacja tych komponentów

Przykład: Project2

background image

 

 

Struktura modułu

Instrukcja unit

Sekcja interface

Opisuje co w danym module „widzi” reszta aplikacji

Nie zwiera kodu wykonawczego lecz typy, stałe, 

zmienne, nagłówki procedur i funkcji, interfejsy klas (!!)

Sekcja implementation

Fragment kodu wykonawczego całej aplikacji

Zmienne, typy, stałe, procedury i funkcje, klasy (!!) o 

zasięgu lokalnym

Implementacje procedur, funkcji i metod klas (!!)

Uwaga: hermetyczność klas w ramach tego 

samego modułu jest naruszana

background image

 

 

Klauzula uses

Informuje kompilator, że powinien dołączyć kod 
znajdujący się w modułach wymienionych w tej 
klauzuli

Może występować zarówno w części interfejsu jak 
i implementacji

Występuje natychmiast za słowami: interface i 
implementation

Jeśli dwa moduły odwołują się do siebie, to w celu 
uniknięcia błędu cyklicznych odwołań, M1 
powinien odwoływać się do M2 w sekcji interfejsu, 
natomiast M2 do M1 – w sekcji implementacji

background image

 

 

Inicjalizacja i finalizacja

Sekcja initialization

Kod tej sekcji modułu jest uruchamiany przed pozostałą częścią 

modułu

Innymi słowy, jest on wykonywany w momencie ładowania modułu 

do pamięci operacyjnej

Typowo służy do inicjalizacji zmiennych (lokalnych, globalnych), w 

szczególności do tworzenia zmiennych dynamicznych 

(wskaźnikowych)

Sekcja finalization

Zwykle ma sens tylko wtedy, gdy w module występuje również sekcja 

inicjalizacji

Stosowana do wykonywania kodu „porządkującego”, np. 

zwalniającego pamięć przydzieloną do obiektów w sekcji inicjalizacji

Sekcje finalizacji wielu modułów są wykonywane w przeciwnej 

kolejności niż wcześniej wykonane sekcje inicjalizacji

Przykład: Project3

background image

 

 

Testowanie 

oprogramowania

Typy błędów

Leksykalne (nazewnicze)

Składniowe (syntaktyczne)

Semantyczne (błędny algorytm)

Wykonawcze (run time)

Błędy wykrywane przez kompilator (linker)

Leksykalne

Składniowe

Błędy wymagające korekty koncepcyjnej (pomocny w 

ich identyfikacji debugger)

Semantyczne

Błędy wykrywane dzięki debuggerowi

wykonawcze

background image

 

 

Śledzenie ścieżek 

wykonywania aplikacji

Praca „krokowa” („krok” o różnej długości)

Przykład: Project3

Instrukcja po instrukcji na tym samym poziomie architektury 

aplikacji (tzn. bez zagnieżdżania w wywoływane procedury, 

funkcje i metody), ang. step over

Instrukcja po instrukcji, ang. trace into

Do kolejnego wiersza kodu źródłowego, ang. trace into next 

source line (bez względu na przepływ sterowania – przejście do 

kolejnego wiersza)

Przejście do pozycji kursora w kodzie (ang. run to cursor)

Zatrzymanie po powrocie z procedury lub funkcji, ang. run until 

return

Wskazanie miejsca zatrzymania, ang. show execution point 

(istotne, gdy oglądamy inny fragment programu)

Dodawanie pułapek, ang. add breakpoint (wykonanie w czasie 

rzeczywistym, aż do napotkania pułapki

background image

 

 

Podglądanie i modyfikacja 

zmiennych

„Czujki”, ang. add watch, służą do bieżącej kontroli 
stanu wybranych zmiennych w trakcie krokowego 
(por. poprzedni slajd) wykonywania programu

Sprawdzanie wartości określonych wyrażeń, ang. 
evaluate, zbudowanych na bazie dostępnych w 
danym kontekście elementów (zmiennych) 
programu

Modyfikacja wybranych zmiennych (pól obiektów) 
programu, ang. modify, w celu sprawdzenia zmiany 
jego zachowania (jednorazowa, bez modyfikacji 
kodu)

background image

 

 

Podsumowanie

Zintegrowane środowisko typu RAD

Programowanie wizualne (VCL)

Styl programowania

Strukturalny

Obiektowy

Modułowy

Perspektywy rozwoju Object Pascal


Document Outline