Curso de Programação Orientada a Objetos – 2.2 Atributos e Métodos
2.2 Atributos e Métodos
Na Programação Orientada a Objetos (POO), atributos e métodos são elementos fundamentais de uma classe.
- Atributos são variáveis que representam as propriedades ou características de um objeto.
- Métodos são funções ou procedimentos que definem o comportamento de um objeto.
Vamos implementar esses conceitos com um exemplo prático para ver como eles funcionam na prática.
Exemplo Prático: Criando uma Classe TCarro
Neste exemplo, vamos criar uma classe TCarro que representa um carro, com atributos como modelo, cor e velocidade atual. Também implementaremos métodos para acelerar e frear o carro.
unit CarroUnit;
interface
type
TCarro = class
private
FModelo: string;
FCor: string;
FVelocidade: Integer;
public
// Construtor da classe
constructor Create(Modelo, Cor: string);
// Métodos
procedure Acelerar(Valor: Integer);
procedure Frear(Valor: Integer);
procedure ExibirStatus;
// Propriedades
property Modelo: string read FModelo write FModelo;
property Cor: string read FCor write FCor;
property Velocidade: Integer read FVelocidade;
end;
implementation
uses
SysUtils;
{ TCarro }
constructor TCarro.Create(Modelo, Cor: string);
begin
FModelo := Modelo;
FCor := Cor;
FVelocidade := 0; // Velocidade inicial é zero
end;
procedure TCarro.Acelerar(Valor: Integer);
begin
FVelocidade := FVelocidade + Valor;
end;
procedure TCarro.Frear(Valor: Integer);
begin
FVelocidade := FVelocidade - Valor;
if FVelocidade < 0 then
FVelocidade := 0; // A velocidade não pode ser negativa
end;
procedure TCarro.ExibirStatus;
begin
WriteLn('Modelo: ' + FModelo);
WriteLn('Cor: ' + FCor);
WriteLn('Velocidade Atual: ' + IntToStr(FVelocidade) + ' km/h');
end;
end.
Neste código, a classe TCarro possui:
- Atributos Privados
FModelo,FCoreFVelocidade:FModeloeFCorsão do tipostringe representam o modelo e a cor do carro.FVelocidadeé do tipoIntegere representa a velocidade atual do carro.
- Construtor
Create:- Inicializa o carro com um modelo e cor especificados e define a velocidade inicial como zero.
- Métodos:
Acelerar: Aumenta a velocidade atual do carro em um valor especificado.Frear: Diminui a velocidade do carro em um valor especificado. Se a velocidade resultante for negativa, ela é ajustada para zero.ExibirStatus: Exibe o modelo, a cor e a velocidade atual do carro.
- Propriedades:
ModeloeCorpermitem acessar e modificar os valores dos atributosFModeloeFCor.Velocidadeé uma propriedade somente leitura que retorna o valor deFVelocidade.
Instanciando e Usando a Classe TCarro
Agora que temos a classe TCarro, vamos criar um objeto dessa classe e utilizar seus métodos para manipular seus atributos.
program ExemploCarro;
uses
SysUtils, CarroUnit;
var
Carro: TCarro;
begin
// Criando uma instância de TCarro
Carro := TCarro.Create('Sedan', 'Vermelho');
// Exibindo o status inicial
Carro.ExibirStatus;
// Acelerando o carro
Carro.Acelerar(50);
Carro.ExibirStatus;
// Acelerando mais uma vez
Carro.Acelerar(30);
Carro.ExibirStatus;
// Freando o carro
Carro.Frear(60);
Carro.ExibirStatus;
// Freando novamente para testar a velocidade negativa
Carro.Frear(30);
Carro.ExibirStatus;
// Liberando a memória do objeto
Carro.Free;
end.
Explicação do Código
- Instanciação do Objeto
Carro:Carro := TCarro.Create('Sedan', 'Vermelho');– Cria um novo objetoCarrodo tipoTCarro, com o modelo “Sedan” e cor “Vermelho”.
- Usando o Método
ExibirStatus:Carro.ExibirStatus;– Exibe o modelo, a cor e a velocidade atual do carro.
- Acelerando o Carro:
Carro.Acelerar(50);– Aumenta a velocidade do carro em 50 km/h.- Chamamos
ExibirStatusnovamente para ver a atualização da velocidade.
- Freando o Carro:
Carro.Frear(60);– Reduz a velocidade do carro em 60 km/h. Se a velocidade resultante for negativa, o métodoFrearajusta a velocidade para zero.
- Liberando a Memória:
Carro.Free;– É importante liberar a memória quando terminamos de usar o objeto.
Conclusão
Neste tópico, exploramos os conceitos de atributos e métodos em uma classe. Aprendemos a criar atributos para armazenar dados e métodos para manipular esses dados, mantendo a lógica encapsulada dentro da classe. Nos próximos tópicos, aprofundaremos outros conceitos essenciais da POO, como encapsulamento e herança.
Continue o curso no próximo post!
Curso de Programação Orientada a Objetos – 2.3 Encapsulamento
