Què és la Programació Orientada a Objectes (POO)?
La Programació Orientada a Objectes (POO) és un paradigma de programació que utilitza "objectes" per dissenyar aplicacions i programes. Els objectes poden representar entitats del món real com ara persones, llocs o coses, i encapsulen tant dades com comportaments.
Conceptes Clau de la POO
-
Classes i Objectes:
- Classe: És una plantilla o model que defineix les propietats (atributs) i els comportaments (mètodes) que els objectes creats a partir d'aquesta classe tindran.
- Objecte: És una instància d'una classe. Cada objecte té el seu propi conjunt de dades, però comparteix la mateixa estructura i comportament definit per la classe.
-
Encapsulació:
- És el procés de combinar dades i mètodes que operen sobre aquestes dades en una sola unitat, la classe. Això ajuda a protegir les dades de l'accés no autoritzat i a mantenir la integritat de l'objecte.
-
Herència:
- Permet crear una nova classe a partir d'una classe existent. La nova classe (subclasse) hereta els atributs i mètodes de la classe existent (superclasse), i pot afegir-ne de nous o modificar els existents.
-
Polimorfisme:
- Permet que una interfície comuna sigui utilitzada per diferents tipus d'objectes. Això significa que es poden utilitzar diferents objectes de diferents classes de manera intercanviable si comparteixen la mateixa interfície o classe base.
-
Abstracció:
- És el procés de simplificar la complexitat ocultant els detalls innecessaris i mostrant només les característiques essencials d'un objecte.
Exemple Pràctic en Delphi/Object Pascal
Definició d'una Classe
type
TAnimal = class
private
FName: string;
FAge: Integer;
public
constructor Create(Name: string; Age: Integer);
procedure Speak; virtual;
property Name: string read FName write FName;
property Age: Integer read FAge write FAge;
end;Explicació del Codi
- type TAnimal = class: Defineix una nova classe anomenada
TAnimal. - private: Defineix la secció privada de la classe, on es declaren els atributs
FNameiFAge. Aquests atributs només són accessibles des de dins de la classe. - public: Defineix la secció pública de la classe, on es declaren el constructor, el mètode
Speaki les propietatsNameiAge. - constructor Create(Name: string; Age: Integer): Defineix un constructor que inicialitza els atributs
FNameiFAge. - procedure Speak; virtual: Defineix un mètode virtual que pot ser sobreescrit per subclasses.
- property Name: string read FName write FName: Defineix una propietat
Nameque permet accedir i modificar l'atributFName. - property Age: Integer read FAge write FAge: Defineix una propietat
Ageque permet accedir i modificar l'atributFAge.
Creació d'Objectes i Ús de Mètodes
var
Animal: TAnimal;
begin
Animal := TAnimal.Create('Luna', 3);
Animal.Speak;
WriteLn('Name: ', Animal.Name);
WriteLn('Age: ', Animal.Age);
Animal.Free;
end;Explicació del Codi
- var Animal: TAnimal: Declara una variable
Animalde tipusTAnimal. - Animal := TAnimal.Create('Luna', 3): Crea una nova instància de
TAnimalamb el nom 'Luna' i l'edat 3. - Animal.Speak: Crida el mètode
Speakde l'objecteAnimal. - WriteLn('Name: ', Animal.Name): Mostra el nom de l'animal.
- WriteLn('Age: ', Animal.Age): Mostra l'edat de l'animal.
- Animal.Free: Allibera la memòria ocupada per l'objecte
Animal.
Herència i Polimorfisme
type
TDog = class(TAnimal)
public
procedure Speak; override;
end;
procedure TDog.Speak;
begin
WriteLn('Woof!');
end;Explicació del Codi
- type TDog = class(TAnimal): Defineix una nova classe
TDogque hereta deTAnimal. - procedure Speak; override: Sobreescriu el mètode
Speakde la classe baseTAnimal. - procedure TDog.Speak: Implementa el mètode
Speakper a la classeTDog, que mostra 'Woof!'.
Ús de la Subclasse
var
Dog: TDog;
begin
Dog := TDog.Create('Buddy', 5);
Dog.Speak;
WriteLn('Name: ', Dog.Name);
WriteLn('Age: ', Dog.Age);
Dog.Free;
end;Explicació del Codi
- var Dog: TDog: Declara una variable
Dogde tipusTDog. - Dog := TDog.Create('Buddy', 5): Crea una nova instància de
TDogamb el nom 'Buddy' i l'edat 5. - Dog.Speak: Crida el mètode
Speakde l'objecteDog, que mostra 'Woof!'. - WriteLn('Name: ', Dog.Name): Mostra el nom del gos.
- WriteLn('Age: ', Dog.Age): Mostra l'edat del gos.
- Dog.Free: Allibera la memòria ocupada per l'objecte
Dog.
Exercicis Pràctics
Exercici 1: Crear una Classe TCat
- Defineix una classe
TCatque hereti deTAnimal. - Sobreescriu el mètode
Speakper mostrar 'Meow!'. - Crea una instància de
TCati crida el mètodeSpeak.
Solució
type
TCat = class(TAnimal)
public
procedure Speak; override;
end;
procedure TCat.Speak;
begin
WriteLn('Meow!');
end;
var
Cat: TCat;
begin
Cat := TCat.Create('Whiskers', 2);
Cat.Speak;
WriteLn('Name: ', Cat.Name);
WriteLn('Age: ', Cat.Age);
Cat.Free;
end;Exercici 2: Crear una Classe TBird
- Defineix una classe
TBirdque hereti deTAnimal. - Sobreescriu el mètode
Speakper mostrar 'Tweet!'. - Crea una instància de
TBirdi crida el mètodeSpeak.
Solució
type
TBird = class(TAnimal)
public
procedure Speak; override;
end;
procedure TBird.Speak;
begin
WriteLn('Tweet!');
end;
var
Bird: TBird;
begin
Bird := TBird.Create('Tweety', 1);
Bird.Speak;
WriteLn('Name: ', Bird.Name);
WriteLn('Age: ', Bird.Age);
Bird.Free;
end;Resum
En aquesta secció, hem introduït els conceptes bàsics de la Programació Orientada a Objectes (POO) i hem vist com aplicar-los en Delphi/Object Pascal. Hem après sobre classes, objectes, encapsulació, herència, polimorfisme i abstracció. També hem creat exemples pràctics per il·lustrar aquests conceptes i hem proporcionat exercicis per reforçar l'aprenentatge. En la següent secció, explorarem més a fons les classes i els objectes.
Curs de Programació Delphi/Object Pascal
Mòdul 1: Introducció a Delphi/Object Pascal
- Introducció a Delphi i Object Pascal
- Configuració de l'Entorn de Desenvolupament
- Primera Aplicació Delphi
- Sintaxi i Estructura Bàsiques
- Variables i Tipus de Dades
Mòdul 2: Estructures de Control i Procediments
- Declaracions Condicionals
- Bucles i Iteració
- Procediments i Funcions
- Abast i Durada de les Variables
- Gestió d'Errors i Depuració
Mòdul 3: Treballant amb Dades
- Arrays i Cadenes
- Registres i Conjunts
- Tipus Enumerats i Subrang
- Gestió d'Arxius
- Accés a Bases de Dades
Mòdul 4: Programació Orientada a Objectes
- Introducció a la POO
- Classes i Objectes
- Herència i Polimorfisme
- Interfícies i Classes Abstractes
- Gestió d'Excepcions en POO
Mòdul 5: Funcions Avançades de Delphi
- Generics i Col·leccions
- Multifil i Programació Paral·lela
- Desenvolupament Basat en Components
- Biblioteca d'Execució de Delphi (RTL)
- Tècniques Avançades de Depuració
Mòdul 6: Desenvolupament d'Interfícies Gràfiques amb VCL i FMX
- Introducció a VCL
- Creació de Formularis i Controls
- Programació Basada en Esdeveniments
- Introducció a FireMonkey (FMX)
- Desenvolupament Multiplataforma amb FMX
Mòdul 7: Desenvolupament Web i Mòbil
- Desenvolupament Web amb Delphi
- Serveis RESTful
- Desenvolupament Mòbil amb Delphi
- Desplegament d'Aplicacions Mòbils
- Integració amb Serveis Web
Mòdul 8: Millors Pràctiques i Patrons de Disseny
- Organització del Codi i Documentació
- Patrons de Disseny en Delphi
- Tècniques de Refactorització
- Proves Unitàries i Desenvolupament Basat en Proves
- Optimització del Rendiment
