plik


ÿþDelphi :: OOP - 4programmers.net http://4programmers.net/Delphi/OOP Logowanie | Rejestracja | Forum | Pomoc | Reklama | Szukaj Strona gBówna :: Delphi OOP Delphi C/C++ Edytuj Historia ArtykuBy ArtykuBy Kompendium FAQ Gotowce C# Programy rozrastaj si coraz bardziej i bardziej. Tak samo jak kiedy[ nie wystarczaBa idea programowania Wprowadzenie FAQ proceduralnego, teraz nie wystarcza ju| programowanie strukturalne. Assembler .NET FAQ Turbo Pascal Koncepcja programowania obiektowego pojawiBa si ju| w latach 60. za spraw jzyka Simula 67, (X)HTML FAQ zaprojektowanego przez naukowców z Oslo w celu przeprowadzania symulacji zachowania si statków. CSS Jednak|e idea programowania obiektowego swoj popularyzacj zawdzicza jzykowi SmallTalk. PoBowa lat 80. PHP JavaScript to czas, kiedy programowanie obiektowe staBo si dominujc technik ? gBównie za spraw C++. Wtedy to te| FAQ Z pogranicza w wielu innych jzykach pojawiBa si mo|liwo[ tworzenia obiektów. Java Algorytmy FAQ WICEJ » Mo|na powiedzie, |e klasa jest rodzajem zbioru, pewnym elementem programu, który wykonuje jakie[ zadania. Klasa zawiera metody (procedury i funkcje), wspóBdziaBajce ze sob w celu wykonania jakiego[ zadania. Programowanie obiektowe przyczyniBo si do tego, |e takie moduBy jak klasy mog by wykorzystywane w wielu innych projektach ? uBatwia to jeszcze bardziej zarzdzanie i konserwacj kodu. Delphi Programy ZaBó|my, |e napisano klas do obsBugi poczty (wysyBanie i odbieranie). Klasa mo|e zawiera procedury C/C++ Dokumentacja Connect (poBcz), SendMail (wy[lij e-mail), k(rozBcz). Z kolei procedura Connect mo|e wywoBywa inn, np. Turbo Pascal Kursy Error (która te| jest procedur znajdujc si w klasie), wy[wietlajc komunikat o bBdzie w razie Assembler Komponenty niepowodzenia i zapisujc odpowiedni informacj w dzienniku programu (czyli, inaczej mówic, w logach ? PHP WICEJ » plikach z rozszerzeniem *.log). Teraz tak klas mo|na wykorzysta w wielu swoich aplikacjach ? wystarczy skopiowa fragment kodu i ju| gotowa jest obsBuga bBdów, Bczenie itp. Tak klas mo|na udostpni innym u|ytkownikom lub swoim wspóBpracownikom. Inny u|ytkownik nie musi wiedzie, jak dziaBa klasa ? dla niego jest wa|ne jej dziaBanie (np. wysyBanie e-maili). U|ytkownik musi jedynie wiedzie, |e istnieje metoda Connect, która poBczy go z danym serwerem oraz musi mie [wiadomo[ obecno[ci kilku innych procedur. To wszystko ? nie interesuje go obsBuga bBdów ? nie musi nawet zdawa sobie sprawy z jej istnienia. Mo|na by oczywi[cie utworzy nowy moduB, a w nim umie[ci tak|e procedury Connect, SendMail oraz Disconnect, Error i reszt potrzebnego kodu. Jednak w takim przypadku metody i zmienne (zmienne tak|e mog by elementami danej klasy) nie oddziaBuj na siebie w takim stopniu. PrzykBadowo, u|ytkownik korzystajcy z takiego kodu bdzie miaB dostp do tych zmiennych, do których nie powinien. Bdzie mógB te| wywoBa swobodnie procedur Error ? a nie powinien, bo mo|e to spowodowa niepo|dane skutki. Dziki klasom mo|na sprawi, i| taka procedura Error nie bdzie dostpna poza klas. Jej elementy (zmienne) te| bd nie do odczytania przez przyszBego u|ytkownika. Spis tre[ci 1 Klasy 2 SkBadnia klasy 3 Do czego sBu| klasy? 4 Hermetyzacja 5 Dziedziczenie 6 Polimorfizm 7 Instancja klasy 8 Konstruktor 9 Destruktor 9.1 Destruktory w .NET 10 Pola 11 Metody 12 WBa[ciwo[ci Klasy Klasy stanowi pewien element, zbiór procedur i funkcji. Jest to specyficzna cz[ jzyka, obecna w wikszo[ci jzyków programowania wysokiego poziomu. Obecnie idea programowania obiektowego jest bardzo popularna, a wBa[nie klasy s kluczowym elementem owej idei. CaBa biblioteka VCL.NET jest oparta na klasach wzajemnie czerpicych z siebie potrzebne funkcje i wBa[ciwo[ci. Równie| platforma .NET dostarcza szereg klas (w tym klas zwizanych z Windows Forms). Wa|ne jest zrozumienie, na czym polega programowanie obiektowe, gdy| na pewno zetkniesz si z tym pojciem, je[li tylko zechce poszerza swoje umiejtno[ci programistyczne w jzykach takich jak C# lub Java, gdzie klasy stanowi podstaw projektowania aplikacji. SkBadnia klasy W jzyku Delphi klas deklaruje si z u|yciem sBowa kluczowego class: type NazwaKlasy = class (KlasaBazowa) Metody end; Klas nale|y deklarowa jako nowy typ danych. Czyli: klasa musi zosta zadeklarowana z u|yciem sBowa kluczowego class, klasa musi by deklarowana jako typ (type), klasa musi mie nazw, klas nale|y zakoDczy sBowem kluczowym ? end;. 1 z 4 2009-03-14 15:59 Delphi :: OOP - 4programmers.net http://4programmers.net/Delphi/OOP RSS | Forum | Pastebin | Zwrómy uwag, |e po sBowie kluczowym class nie ma [rednika! Regulamin | Pomoc | UsuD Copyright © 2000-2006 by Coyote Group 0.9.3-pre3 cookies | Prawa autorskie | Czas generowania strony: 0.1424 sek. (zapytaD SQL: Kontakt | Reklama) 10 Najprostsza deklaracja klasy mo|e wyglda nastpujco: type MojaKlasa = class end; Od tego momentu bdzie mo|na zadeklarowa now zmienn typu MojaKlasa: var Moja : MojaKlasa; Skoro klasa jest deklarowana jako typ, w ka|dym momencie mo|na utworzy zmienn wskazujc na ów typ. Taka konstrukcja jak powy|ej jest nazywana tworzeniem instancji klasy lub egzemplarza klasy. Mo|esz si spotka równie| z pojciem tworzenia obiektu klasy. Zalecane jest specjalne nazewnictwo w przypadku klas, z uwzgldnieniem litery T jako pierwszej litery nazwy klasy ? np. TObject, TRegistry, TMojaKlasa itp. Taka konwencja przyjBa si dziki bibliotece VCL, w której nazwa ka|dej klasy jest poprzedzana liter T. Nie zamierzam odbiega od tej reguBy ? swoje klasy tak|e bd nazywaB, zaczynajc od litery T. Do czego sBu| klasy? Pocztkujcemu programi[cie zapewne trudno bdzie dostrzec zalety korzystania z klas. Zawsze mo|na zrealizowa ten sam cel, posBugujc si zmiennymi globalnymi oraz procedurami i funkcjami. To fakt, jednak stosowanie klas daje spore mo|liwo[ci, z których warto wymieni: umieszczanie w niej odpowiednich metod i ich ukrywanie, albo te| tworzenie kilku instancji danej klasy. Ponadto umo|liwia uporzdkowanie kodu i podzielenie go na kilka oddzielnych cz[ci, z których ka|da wykonuje inn czynno[ podczas dziaBania programu. PrzykBadowo, aby zBo|y komputer, nie musz wiedzie, jak dokBadnie dziaBa procesor i z jakich elementów jest zbudowany. Wystarczy |e wiem, |e jest to centralna jednostka komputera i |e bez procesora nie uruchomi caBo[ci. Musz tak|e wiedzie, gdzie wBo|y ten procesor i jak go przymocowa. Kierowca samochodu nie musi wiedzie, co auto ma pod mask, jakie s parametry jego silnika, jak dziaBa skrzynia biegów i co powoduje, |e caBo[ si porusza. Wystarczy |e wie, i| do uruchomienia samochodu potrzebne s kluczyki ? musi równie| umie posBugiwa si kierownic, dzwigni zmiany biegów i pedaBami. Je|eli wraz ze swoimi wspólnikami projektujecie jak[ wiksz aplikacj, ka|dy mo|e zaj si przydzielonym zadaniem ? przykBadowo, kto[ zajmuje si utworzeniem klasy sBu|cej do wyszukiwania plików na dysku, jeszcze kto[ tworzeniem innej klasy, a inna osoba jedynie wszystko koordynuje i Bczy w caBo[. Nie musi ona wiedzie, w jaki sposób dziaBa klasa wyszukujca pliki, ale musi wiedzie, jak j poBczy z reszt programu, tak aby wszystko dziaBaBo zgodnie z oczekiwaniami. Tego z kolei mo|na si dowiedzie z instrukcji (czyli z dokumentacji dostarczonej przez autora klasy). Hermetyzacja Pojcie hermetyzacji jest zwizane z ukrywaniem pewnych danych. Klasy udostpniaj na zewntrz pewien interfejs opisujcy dziaBanie takiej klasy i tylko z tego interfejsu mo|e korzysta u|ytkownik. Bowiem klasy mog zawiera dziesitki, a nawet setki metod (procedur lub funkcji), które wykonuj ró|ne czynno[ci. My jako projektanci klasy powinni[my zapewni dostp jedynie do niektórych metod, tak aby potencjalny u|ytkownik nie mógB wykorzystywa wszystkich, gdy| mo|e to spowodowa nieprzewidywalne dziaBanie programu, zawieszanie itp. Wewntrz silnika samochodu te| dochodzi do pewnych procesów, ale kierowca nie musi o nich wiedzie. Informacji tych nie potrzebuje tak|e inny element silnika, który si z nim Bczy ? komunikowanie si pomidzy elementami przebiega ustalonym strumieniem i to wystarczy. Delphi pozwala na ukrywanie kodu w klasie, w tym celu stosuje si pewne klauzule, o których powiemy sobie pózniej. Metody s procedurami i funkcjami znajdujcymi si w klasie i wspóBpracujcymi z sob w celu wykonania konkretnych czynno[ci. Dziedziczenie CaBa wizualna biblioteka VCL jest oparta na dziedziczeniu, które mo|na okre[li jako podstawowy fundament budowania klas. Powrómy do przykBadu z silnikiem. Projektanci, chcc ulepszy dany silnik, mog nie zechcie zaczyna od zera. ByBaby to zwyczajna strata czasu. Nie lepiej po prostu unowocze[ni silnik ju| istniejcy? PrzykBad z silnikiem mo|na zastosowa do klas. Aby zbudowa now, bardziej funkcjonaln klas, mo|na przej mo|liwo[ci starej. Taki proces nazywamy w programowaniu dziedziczeniem. Na przykBad w VCL podstawow klas jest klasa o nazwie TObject. Zaprogramowano w niej podstawowe mechanizmy oraz funkcje. Klas, która dziedziczy po niej, jest TRegistry. Inaczej mówic, przejmuje ona wszystkie dotychczasowe mo|liwo[ci TObject oraz dodaje wBasne ? w tym przypadku obsBug rejestru Windows. W takim przypadku klas TObject nazywamy klas potomn (lub po prostu potomkiem), a TRegistry klas dziedziczn. Polimorfizm Pojcie polimorfizmu jest zwizane z dziedziczeniem. Jest to po prostu mo|liwo[ tworzenia wielu metod o tej samej nazwie. PrzykBadowo, je|eli klasa A zawiera metod XYZ i je|eli klasa B dziedziczy po klasie A, to tym samym posiada równie| jej metod XYZ. Teraz istnieje mo|liwo[ ?przykrycia? owej metody XYZ i zaimplementowanie takiej samej, tyle |e w klasie B. 2 z 4 2009-03-14 15:59 Delphi :: OOP - 4programmers.net http://4programmers.net/Delphi/OOP Instancja klasy Aby móc wykorzystywa metody znajdujce si w klasie, nale|y utworzy tzw. instancj owej klasy. W tym momencie zostaje zarezerwowana pami potrzebna do wykonania metod znajdujcych si w tej klasie. Istotn spraw jest to, |e mo|e istnie wiele instancji danej klasy. Jest to przewaga w stosunku do idei programowania strukturalnego. Ka|da instancja rezerwuje osobny blok pamici. Ewentualne zmienne (pola) znajdujce si w obrbie klasy korzystaj z osobnych przestrzeni adresowych i mog mie ró|ne warto[ci. Konstruktor Aby utworzy klas i móc j stosowa, nale|y skorzysta z tzw. konstruktora. Konstruktor jest specjaln metod dziedziczon po klasie TObject (w przypadku VCL), za pomoc której jest mo|liwe zainicjalizowanie klasy. Oto przykBad inicjalizacji klasy: var Klasa : TMojaKlasa; // wskazanie na nowy typ ? klas begin Klasa := TMojaKlasa.Create; // wywoBanie konstruktora end; Jak wida, konstrukcja jest w tym przypadku do[ specyficzna: Zmienna := NazwaKlasy.Create; Taka instrukcja spowoduje utworzenie klasy ? od tej pory mo|na z niej dowolnie korzysta. Destruktor Destruktor jest specjaln metod utworzon w celu destrukcji klasy, czyli zwolnienia pamici. Tak wic konstruktor powinien by wywoBywany na samym pocztku ? przed skorzystaniem z klasy, a destruktor ? na samym koDcu, kiedy dana klasa ju| jest niepotrzebna. Destruktor równie| jest metod dziedziczon po klasie TObject ? oto przykBad jej wywoBania: var Klasa : TMojaKlasa; // wskazanie na nowy typ ? klas begin Klasa := TMojaKlasa.Create; // wywoBanie konstruktora Klasa.Free; // zwolnienie klasy end; Destrukcja klasy odbywa si poprzez wywoBanie metody Free. Destruktory w .NET Ten fragment zostaB opisany w osobnym artykule: Destruktory w .NET Pola Pojcie zostaBo opisane w osobnym artykule. Metody Pojcie zostaBo opisane w osobnym artykule. WBa[ciwo[ci Pojcie zostaBo opisane w osobnym artykule. Zobacz te|: Typy metod Przeci|anie metod Poziomy dostpu Destruktory w .NET Dziedziczenie PrzeBadowanie operatorów Interfejsy Is As Rekordy Class helpers Self Static Sealed ArtykuBy w kategorii: OOP Lista SzczegóBy A P Abstract Pola As Poziomy dostpu Private C Protected Przedefiniowanie metod Class Public Class helpers Published Constructor R D Read (sBowo kluczowe) Default Reintroduce Destructor 3 z 4 2009-03-14 15:59 Delphi :: OOP - 4programmers.net http://4programmers.net/Delphi/OOP Dynamic S Dziedziczenie Sealed I Self Inherited Self Is Static Stored M Strict private Strict protected Metody Metody proste T N Typy metod Typy zagnie|d|one Nodefault V O Virtual Opakowywanie typów Operator W Override WBa[ciwo[ci Write (sBowo kluczowe) Kategoria: Delphi Ostatnia modyfikacja 26-01-2006 16:07 Ostatni autor Adam Boduch Ilo[ wy[wietleD 28529 Wersja 4 Adam Boduch dnia 12-03-2008 09:45 Jasne, ale pojecie "zmienna" jest uzywane zamiennie do "pola", aby wprowadzic nowe pojecie dla poczatkujacych, i tymsamym aby nie wprowadzac zametu. Tom:-) dnia 11-03-2008 21:18 W klasach nie ma zmiennych tylko s pola Adam Boduch dnia 23-02-2006 11:06 ...no to napisz! Coldpeer dnia 22-02-2006 16:03 Jeszcze mo|na napisa troch wicej o klasach Dodaj komentarz 4 z 4 2009-03-14 15:59

Wyszukiwarka

Podobne podstrony:
Delphi i PHP
Delphi Leksykon kieszonkowy?lplk
language oop
Delphi Kompendium Roz2
Programuje w Delphi i C Builder
Delphi Almanach?lalm
Praktyczny kurs programowania w Delphi

więcej podobnych podstron