
Índice
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
.
- Criando o Projeto: Abra o Delphi e crie um novo projeto VCL Forms Application.
- Adicionar Componentes: Adicione um botão ao formulário (
TButton
) e defina a propriedadeCaption
como “Show Library”. - 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.

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.