Mucha gente en China considera a Delphi como su herramienta de desarrollo preferida. La razón es, por supuesto, que Delphi proporciona a los desarrolladores muchas características: desarrollo orientado a objetos, diseño de interfaz visual, componentes enriquecidos y portabilidad multiplataforma (nuevas características de Delphi6).
Pero para los principiantes, el pensamiento orientado a objetos puede no ser el mayor sentimiento que les brinda Delphi. El diseño de la interfaz visual y los ricos y diversos componentes disponibles dejan la impresión más profunda e inolvidable. La grave consecuencia de esto es que los principiantes a menudo solo se concentran durante mucho tiempo en el uso de los componentes VCL existentes proporcionados por Delphi, y descuidan pensar en el impacto del pensamiento orientado a objetos en todo Delphi. El significado contenido en la arquitectura del componente. sistema.
El siguiente fragmento de código contiene uno de los errores más comunes que suelen cometer los principiantes. Aunque este error no es un error gramatical, revela que es necesario fortalecer el pensamiento orientado a objetos del usuario:
var
Formulario1: TForm1;
implementación
{$R*.dfm}
Procedimiento TForm1.Button1Click(Remitente: TObject);
comenzar
ShowMessage(Form1.Caption); // <-- Hay algunos problemas con el uso de Form1 aquí.
fin;
A primera vista, este tipo de código no parece tener nada de malo. Sin embargo, la apariencia de Form1 aquí es algo irrazonable. Obviamente, el código aquí está escrito para implementar el método ButtonClick de TForm1, y Form1, como una instancia de la clase TForm1, en realidad está escrito en la implementación de la clase. ¿No hay cierta confusión conceptual? al pensamiento orientado a objetos también es muy simple y se puede escribir de dos maneras:
1. ShowMessage(Self.Caption); // <-- Esta forma de escribir es muy clara. La información que se mostrará es el título de la instancia actual de la clase.
2. ShowMessage(Caption); // <-- El método de escritura aquí es el mismo que el anterior, pero se omite la palabra clave Self;
Los tres contenidos centrales del pensamiento orientado a objetos son la encapsulación, la herencia y el polimorfismo. El problema expuesto por el ejemplo anterior es el problema de la encapsulación. Ejemplos similares incluyen:
var
Formulario1: TForm1;
...
var
Formulario2: TForm2;
procedimiento TForm1.Button1Click (Remitente: TObject);
comenzar
Form2.Show; // <-- Como variable global, el uso de Form2 aquí también es confuso.
fin;
El ejemplo anterior puede ser más general. En la mayoría de los casos, en un proyecto, TForm1 y TForm2 solo pueden tener una instancia cada uno, por lo que dicho código puede considerarse aceptable. Pero en sentido estricto, no cumple con los requisitos de encapsulación. Consulte el siguiente código:
tipo
TForm1 = clase(TForm)
Botón1: TBotón;
procedimiento Button1Click(Remitente: TObject);
privado
{Declaraciones privadas}
FNiguiente: TForm;
público
{Declaraciones públicas}
propiedad NextForm: TForm lee FNext escribe FNext;
fin;
var
Formulario1: TForm1;
implementación
utiliza la Unidad2;
{$R*.dfm}
procedimiento TForm1.Button1Click (Remitente: TObject);
comenzar
si está asignado (FNext), entonces
TForm2(FNext).Mostrar;
fin;
fin.
// El siguiente es el contenido del archivo del proyecto:
programa Proyecto1;
usos
formularios,
Unidad1 en 'Unidad1.pas' {Form1},
Unidad2 en 'Unidad2.pas' {Form2};
{$R*.res}
comenzar
aplicación.Inicializar;
Aplicación.CreateForm(TForm1, Form1);
Aplicación.CreateForm(TForm2, Form2);
Form1.NextForm := Form2; // <-- Agregue esta oración para que el código apenas cumpla con los requisitos de encapsulación.
Aplicación.Ejecutar;
fin.
Pase el puntero de Form2 a Form1 como un atributo de Form1. ¡De esta manera, Form1 cumple con el principio de encapsulación al llamar! Por supuesto, estos códigos solo reflejan la idea de encapsulación. En la práctica, usted puede decidir si realmente desea implementarlo tan a fondo de acuerdo con sus hábitos personales. Pero este tipo de pensamiento debe echar raíces en la mente... (Inconcluso, continuará).
Más artículos