Introducción
En este tema, exploraremos los conceptos fundamentales de la Programación Orientada a Objetos (POO) en Delphi/Object Pascal, centrándonos en las clases y los objetos. Estos son los bloques de construcción esenciales para cualquier aplicación orientada a objetos.
Conceptos Clave
- Clase: Una plantilla o modelo que define las propiedades y comportamientos (métodos) comunes a todos los objetos de ese tipo.
- Objeto: Una instancia de una clase. Es una entidad concreta que tiene un estado y un comportamiento definido por su clase.
- Propiedades: Atributos o datos que describen el estado de un objeto.
- Métodos: Funciones o procedimientos que definen el comportamiento de un objeto.
Definición de una Clase
En Delphi, una clase se define utilizando la palabra clave class
. Aquí hay un ejemplo básico de una clase llamada TPerson
:
type TPerson = class private FName: string; FAge: Integer; public constructor Create(Name: string; Age: Integer); procedure DisplayInfo; end;
Explicación del Código
- type: Define un nuevo tipo.
- TPerson = class: Declara una nueva clase llamada
TPerson
. - private: Sección donde se declaran los campos privados de la clase. Estos campos solo son accesibles desde dentro de la clase.
FName
: Un campo privado que almacena el nombre de la persona.FAge
: Un campo privado que almacena la edad de la persona.
- public: Sección donde se declaran los métodos y propiedades públicas de la clase. Estos son accesibles desde fuera de la clase.
constructor Create(Name: string; Age: Integer)
: Un constructor que inicializa una nueva instancia deTPerson
.procedure DisplayInfo
: Un método que muestra la información de la persona.
Creación de Objetos
Para crear un objeto de la clase TPerson
, utilizamos el constructor definido en la clase:
Explicación del Código
- var Person: TPerson: Declara una variable
Person
de tipoTPerson
. - Person := TPerson.Create('John Doe', 30): Crea una nueva instancia de
TPerson
y la asigna a la variablePerson
. - Person.DisplayInfo: Llama al método
DisplayInfo
del objetoPerson
.
Implementación de Métodos
A continuación, implementamos el constructor y el método DisplayInfo
de la clase TPerson
:
constructor TPerson.Create(Name: string; Age: Integer); begin FName := Name; FAge := Age; end; procedure TPerson.DisplayInfo; begin WriteLn('Name: ', FName); WriteLn('Age: ', FAge); end;
Explicación del Código
- constructor TPerson.Create(Name: string; Age: Integer): Implementa el constructor de la clase
TPerson
.FName := Name
: Asigna el valor del parámetroName
al campo privadoFName
.FAge := Age
: Asigna el valor del parámetroAge
al campo privadoFAge
.
- procedure TPerson.DisplayInfo: Implementa el método
DisplayInfo
de la claseTPerson
.WriteLn('Name: ', FName)
: Muestra el nombre de la persona.WriteLn('Age: ', FAge)
: Muestra la edad de la persona.
Ejercicio Práctico
Ejercicio
- Define una clase
TCar
con las siguientes propiedades privadas:FMake
: Marca del coche (string).FModel
: Modelo del coche (string).FYear
: Año del coche (Integer).
- Implementa un constructor que inicialice estas propiedades.
- Implementa un método
DisplayInfo
que muestre la información del coche.
Solución
type TCar = class private FMake: string; FModel: string; FYear: Integer; public constructor Create(Make, Model: string; Year: Integer); procedure DisplayInfo; end; constructor TCar.Create(Make, Model: string; Year: Integer); begin FMake := Make; FModel := Model; FYear := Year; end; procedure TCar.DisplayInfo; begin WriteLn('Make: ', FMake); WriteLn('Model: ', FModel); WriteLn('Year: ', FYear); end; var Car: TCar; begin Car := TCar.Create('Toyota', 'Corolla', 2020); Car.DisplayInfo; end;
Explicación del Código
- TCar = class: Declara una nueva clase llamada
TCar
. - private: Sección donde se declaran los campos privados de la clase.
FMake
: Almacena la marca del coche.FModel
: Almacena el modelo del coche.FYear
: Almacena el año del coche.
- public: Sección donde se declaran los métodos y propiedades públicas de la clase.
constructor Create(Make, Model: string; Year: Integer)
: Un constructor que inicializa una nueva instancia deTCar
.procedure DisplayInfo
: Un método que muestra la información del coche.
- Car := TCar.Create('Toyota', 'Corolla', 2020): Crea una nueva instancia de
TCar
y la asigna a la variableCar
. - Car.DisplayInfo: Llama al método
DisplayInfo
del objetoCar
.
Conclusión
En esta sección, hemos aprendido los conceptos básicos de las clases y los objetos en Delphi/Object Pascal. Hemos visto cómo definir una clase, crear objetos y cómo implementar métodos. Estos conceptos son fundamentales para la Programación Orientada a Objetos y serán la base para temas más avanzados en los próximos módulos.
Curso de Programación en Delphi/Object Pascal
Módulo 1: Introducción a Delphi/Object Pascal
- Introducción a Delphi y Object Pascal
- Configuración del Entorno de Desarrollo
- Primera Aplicación en Delphi
- Sintaxis y Estructura Básica
- Variables y Tipos de Datos
Módulo 2: Estructuras de Control y Procedimientos
- Sentencias Condicionales
- Bucles e Iteración
- Procedimientos y Funciones
- Ámbito y Ciclo de Vida de las Variables
- Manejo de Errores y Depuración
Módulo 3: Trabajando con Datos
- Arreglos y Cadenas
- Registros y Conjuntos
- Tipos Enumerados y Subrangos
- Manejo de Archivos
- Acceso a Bases de Datos
Módulo 4: Programación Orientada a Objetos
- Introducción a la POO
- Clases y Objetos
- Herencia y Polimorfismo
- Interfaces y Clases Abstractas
- Manejo de Excepciones en POO
Módulo 5: Características Avanzadas de Delphi
- Genéricos y Colecciones
- Multihilo y Programación Paralela
- Desarrollo Basado en Componentes
- Biblioteca de Tiempo de Ejecución de Delphi (RTL)
- Técnicas Avanzadas de Depuración
Módulo 6: Desarrollo de GUI con VCL y FMX
- Introducción a VCL
- Creación de Formularios y Controles
- Programación Orientada a Eventos
- Introducción a FireMonkey (FMX)
- Desarrollo Multiplataforma con FMX
Módulo 7: Desarrollo Web y Móvil
- Desarrollo Web con Delphi
- Servicios RESTful
- Desarrollo Móvil con Delphi
- Despliegue de Aplicaciones Móviles
- Integración con Servicios Web
Módulo 8: Mejores Prácticas y Patrones de Diseño
- Organización del Código y Documentación
- Patrones de Diseño en Delphi
- Técnicas de Refactorización
- Pruebas Unitarias y Desarrollo Basado en Pruebas
- Optimización del Rendimiento