Masz pytanie? Zadaj je na programistycznym Forum Turbo Pascal. Rejestracja w 5 sekund!


Typ obiektowy w języku Turbo Pascal

Kurs Turbo Pascala dla początkujących

Typ obiektowy. Obiektem w Pascalu nazywa się złożoną strukturę danych o ustalonej liczbie elementów składowych, z których każdy może być polem lub metodą (m.in. procedurą lub funkcją), tj. elementem opisującym operację wykonywaną na danym obiekcie. W definicji typu obiektowego, podobnie jak w definicji typu rekordowego, dla każdego pola specyfikuje się jego typ i identyfikator. Opis metody składa się z nagłówka procedury, funkcji, konstruktora lub destruktora, przy czym definicja pojedynczego typu obiektowego może zawierać opisy wielu metod. Opis typu obiektowego rozpoczyna się od słowa kluczowego object, a kończy słowem kluczowym end. Definicja pojedynczego typu obiektowego ma postać:

TYPE Identyfikator_typu = object dziedzictwo 
	Lista_deklaracji_pól
	Lista_deklaracji_metod
end;

lub

TYPE Identyfikator_typu = object dziedzictwo
	Lista_deklaracji_pól
	Lista_deklaracji_metod
	Sekcje_list
end;

przy czym elementy wyszczególnione pomiędzy słowami object i end są opcjonalne, a każda z sekcji list może mieć jedną z poniższych postaci:

private   Lista_deklaracji_pól   Lista_deklaracji_metod

lub

public   Lista_deklaracji_pól   Lista_deklaracji_metod

przy czym w sekcjach tych oba elementy są także opcjonalne.

Dziedzictwo oznacza ujęty w nawiasy okrągłe identyfikator innego, zdefiniowanego wcześniej, typu obiektowego. Jeśli w definicji typu obiektowego wystąpi ten element, oznacza to, że dany typ obiektowy zawiera (dziedziczy) wszystkie elementy podane w definicji typu obiektowego o wyspecyfikowanej nazwie.

Każda z deklaracji pól ma postać:

Lista_nazw_pól : opis_typu;

a każda deklaracja metody jest następująca:

nagłowek_metody;

lub

nagłowek_metody; virtual;

gdzie nagłowek metody oznacza nagłowek funkcji, procedurey, konstruktora lub destruktora. Słowo kluczowe virtual określa daną metodę jako wirtualną (?). Definicję poszczególnych metod podaje się poza definicją typu obiektowego. Każda definicja metody zawiera w nagłówku nazwę funkcji, procedury, konstruktora lub destruktora, poprzedzoną kropką i nazwą odnośnego typu obiektowego.

Jeśli definicja typu obiektowego zawiera dyrektywę private, oznacza to, że zakres ważności pól i (lub) metod podanych po tej dyrektywie jest ograniczony do modułu (lub programu), który zawiera definicję danego typu obiektowego. Tego typu pola i metody nazywami polami i metodami prywatnymi. Użycie po sekcji z dyrektywą private dyrektywy public powoduje anulowanie ograniczenia zakresu ważności dla dalszych pól i (lub) metod.

Przykłady:

TYPE punkt = object X, Y:Integer; end;
TYPE piksel = object (punkt) Kolor:Byte; end;

Typ obiektowy piksel zawiera elementy typu obiektowego punkt.

TYPE odcinek = object 
	X, Y:Byte; 
	procedure zaznacz(dx, dy: Byte);
end;

Dla powyższego typu konieczne jest podanie w dalszej części programu definicji procedury zaznacz:

procedure odcinek.zaznacz(dx, dy: Byte);
begin   
... Jakieś_instrukcje
end;

Spis treści

Jeśli chcesz, zostaw komentarz