Propriedades e Métodos em Delphi

Propriedades e Métodos em Delphi
Biblioteca

Introdução

A programação em Delphi oferece uma vasta gama de funcionalidades que facilitam o desenvolvimento de aplicações robustas e eficientes. Entre essas funcionalidades, destacam-se as propriedades e métodos, componentes essenciais da Programação Orientada a Objetos (POO). Neste artigo, vamos explorar o que são propriedades e métodos, a diferença entre propriedades e variáveis, como definir e usar propriedades e métodos em Delphi, e fornecer um exemplo prático com código. Vamos abordar esses tópicos de maneira clara e acessível para que você possa aplicar esses conceitos em seus projetos.

O que são Propriedades e Métodos?

Propriedades e métodos são conceitos fundamentais em POO, utilizados para definir e manipular dados e comportamentos de objetos.

  • Propriedades: As propriedades são atributos de uma classe que representam os dados do objeto. Elas encapsulam variáveis privadas, permitindo acesso controlado aos valores internos de um objeto. As propriedades podem ter métodos de leitura e escrita, conhecidos como getters e setters, que controlam como os valores são acessados e modificados.
  • Métodos: Os métodos são funções ou procedimentos associados a uma classe que definem comportamentos ou ações que os objetos da classe podem realizar. Eles são responsáveis por manipular os dados dos objetos e implementar a lógica de negócios.

Diferença entre Propriedades e Variáveis

Embora propriedades e variáveis possam parecer semelhantes, existem diferenças importantes entre elas:

  • Variáveis: São usadas para armazenar dados diretamente e podem ser públicas ou privadas. No entanto, não oferecem controle sobre o acesso e modificação dos dados.
  • Propriedades: Propriedades fornecem um nível de abstração sobre as variáveis, permitindo controlar como os dados são acessados e modificados. Elas permitem encapsular a lógica de leitura e escrita, garantindo que os dados sejam manipulados de maneira segura e consistente.

Como Definir e Usar Propriedades e Métodos em Delphi

Vamos ver como definir e usar propriedades e métodos em Delphi com um exemplo prático. Suponha que queremos criar uma classe que represente um livro e uma biblioteca.

Definindo a Classe TBook (Livro)

type
  TBook = class
  private
    FTitle: string;
    FAuthor: string;
    FYear: Integer;
    function GetDescription: string;
  public
    property Title: string read FTitle write FTitle;
    property Author: string read FAuthor write FAuthor;
    property Year: Integer read FYear write FYear;
    property Description: string read GetDescription;
    procedure DisplayInfo;
  end;

function TBook.GetDescription: string;
begin
  Result := FTitle + ' by ' + FAuthor + ', published in ' + IntToStr(FYear);
end;

procedure TBook.DisplayInfo;
begin
  ShowMessage(Description);
end;

No trecho de código acima criamos a classe TBook que tem as propriedades Tile, Autor, Year e Description, que serão responsáveis por armazenar os dados do livro, e também possui o método DisplayInfo que será responsável por exibir a descrição do livro, que é uma propriedade do livro, ou seja, um dado.

Definindo a Classe TLibrary (Biblioteca)

type
  TLibrary = class
  private
    FBooks: TList<TBook>;
  public
    constructor Create;
    destructor Destroy; override;
    procedure AddBook(ABook: TBook);
    procedure DisplayBooks;
  end;

constructor TLibrary.Create;
begin
  FBooks := TList<TBook>.Create;
end;

destructor TLibrary.Destroy;
begin
  FBooks.Free;
  inherited;
end;

procedure TLibrary.AddBook(ABook: TBook);
begin
  FBooks.Add(ABook);
end;

procedure TLibrary.DisplayBooks;
var
  Book: TBook;
begin
  for Book in FBooks do
  begin
    Book.DisplayInfo;
  end;
end;

No trecho de código acima criamos a classe TLibrary, essa classe possui uma variável privada FBooks que é uma lista que possui os dados da classe TBook, criada anteriormente. A classe TLibrary possui quatro métodos, Create, que será executado na instância de TLibrary, Destroy, que será executado quando a instância de TLibrary for destruída, AddBook, que será responsável por adicionar os livros TBook na biblioteca TLibrary e DisplayBooks, que será responsável por exibir a descrição dos livros.

Exemplo Prático com Código

Vamos agora criar uma aplicação Delphi que utiliza as classes TBook e TLibrary.

  1. Criando o Projeto: Abra o Delphi e crie um novo projeto VCL Forms Application.
  2. Adicionar Componentes: Adicione um botão ao formulário (TButton) e defina a propriedade Caption como “Show Library”.
  3. Adicionar Unit: Com o mesmo projeto aberto, abra o menu File -> New -> Unit-Delphi. Deixe com o nome de Unit2 mesmo, para seguir o exemplo abaixo. Nessa Unit, coloque os códigos de TBook e TLibrary que serão utilizados no formulário principal, Unit1.

Código da Unit2 (Classes TBook e TLibrary)

unit Unit2;

interface

uses System.SysUtils, Vcl.Dialogs, Generics.Collections;

type
  TBook = class
  private
    FTitle: string;
    FAuthor: string;
    FYear: Integer;
    function GetDescription: string;
  public
    property Title: string read FTitle write FTitle;
    property Author: string read FAuthor write FAuthor;
    property Year: Integer read FYear write FYear;
    property Description: string read GetDescription;
    procedure DisplayInfo;
  end;

  TLibrary = class
  private
    FBooks: TList<TBook>;
  public
    constructor Create;
    destructor Destroy; override;
    procedure AddBook(ABook: TBook);
    procedure DisplayBooks;
  end;

implementation

{ TBook }

function TBook.GetDescription: string;
begin
  Result := FTitle + ' by ' + FAuthor + ', published in ' + IntToStr(FYear);
end;

procedure TBook.DisplayInfo;
begin
  ShowMessage(Description);
end;

{ TLibrary }

constructor TLibrary.Create;
begin
  FBooks := TList<TBook>.Create;//cria a lista de livros
end;

destructor TLibrary.Destroy;
begin
  FBooks.Free; //destrói a lista de livros
  inherited;
end;

procedure TLibrary.AddBook(ABook: TBook);
begin
  FBooks.Add(ABook);//adiciona um novo livro na lista
end;

procedure TLibrary.DisplayBooks;
var
  Book: TBook;
begin
  //chama o método DisplayInfo para livro dentro da lista de livros.
  for Book in FBooks do
  begin
    Book.DisplayInfo;
  end;
end;

end.

Código do Formulário principal (Unit1)

unit Unit1;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, System.Generics.Collections;

type
  TForm1 = class(TForm)
    Button1: TButton;
    procedure Button1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

uses
  Unit2; // Supondo que as classes TBook e TLibrary estão definidas em Unit2

procedure TForm1.Button1Click(Sender: TObject);
var
  aLibrary: TLibrary;
  Book1, Book2: TBook;
begin
  aLibrary := TLibrary.Create;
  try
    Book1 := TBook.Create;
    Book1.Title := '1984';
    Book1.Author := 'George Orwell';
    Book1.Year := 1949;
    aLibrary.AddBook(Book1);

    Book2 := TBook.Create;
    Book2.Title := 'To Kill a Mockingbird';
    Book2.Author := 'Harper Lee';
    Book2.Year := 1960;
    aLibrary.AddBook(Book2);

    aLibrary.DisplayBooks;
  finally
    aLibrary.Free;
  end;
end;

end.
Ilustração do projeto

Código fonte do exemplo

Você pode fazer o download do exemplo do projeto através do repositório do github:

https://github.com/Gisele-de-Melo/ClasseBookLibrary

Conclusão

Neste artigo, exploramos as propriedades e métodos em Delphi, entendendo suas diferenças em relação às variáveis e como utilizá-los de maneira eficaz. Através do exemplo prático das classes TBook e TLibrary, vimos como definir, instanciar e manipular objetos em Delphi, utilizando propriedades para encapsular dados e métodos para implementar comportamentos. Essas técnicas são fundamentais para escrever código limpo, organizado e fácil de manter.

Esperamos que este guia tenha sido útil para sua compreensão de propriedades e métodos em Delphi. Continue explorando e experimentando com esses conceitos para aprimorar suas habilidades de programação. A prática é essencial para dominar a Programação Orientada a Objetos e desenvolver aplicações robustas e eficientes.

Observação: O exemplo acima foi criado no Delphi 11, ele só funcionará nas versões mais recentes, se você estiver utilizando o Delphi 7 por exemplo, não irá funcionar, pois nesse exemplo eu faço uso de Generics para criar a lista de livros e do laço de repetição For In, que não é suportado em versões mais antigas do Delphi. Veja os posts relacionados que possuem exemplos de código que irá funcionar nas versões mais antigas.

Posts Relacionados


Deixe um comentário