Programação orientada a objetos em delphi
-
Upload
helder-lopes -
Category
Education
-
view
5.305 -
download
7
description
Transcript of Programação orientada a objetos em delphi
![Page 1: Programação orientada a objetos em delphi](https://reader033.fdocument.pub/reader033/viewer/2022042614/5575f4d5d8b42a81158b4615/html5/thumbnails/1.jpg)
Programação orientada a objetos em DelphiAbrindo sua mente para um mundo novo... mas nem tanto!
![Page 2: Programação orientada a objetos em delphi](https://reader033.fdocument.pub/reader033/viewer/2022042614/5575f4d5d8b42a81158b4615/html5/thumbnails/2.jpg)
Mudar!? Para quê???
Se você chegou até aqui, significa que você procura por otimizar seu processo de trabalho!
Então deixe o comodismo e o preconceito de lado!
FreeDigitalPhotos.net
![Page 3: Programação orientada a objetos em delphi](https://reader033.fdocument.pub/reader033/viewer/2022042614/5575f4d5d8b42a81158b4615/html5/thumbnails/3.jpg)
Mas preciso estudar um monte de teorias novas?
Orientação a Objeto é um conceito antigo.Mas a melhor maneira de aprender é usando!
Polimorfismo, herança e encapsulamento são conceitos importantes! Mas a prática leva à
perfeição!FreeDigitalPhotos.net
![Page 4: Programação orientada a objetos em delphi](https://reader033.fdocument.pub/reader033/viewer/2022042614/5575f4d5d8b42a81158b4615/html5/thumbnails/4.jpg)
O que devo saber sobre a teoria?
● Orientação a objetos: Estrutura de agrupamento de dados e funções que tem por objetivo alta padronização e usabilidade de informações.
![Page 5: Programação orientada a objetos em delphi](https://reader033.fdocument.pub/reader033/viewer/2022042614/5575f4d5d8b42a81158b4615/html5/thumbnails/5.jpg)
O que devo saber sobre a teoria?
● Polimorfismo, herança e encapsulamento: São metodologias utilizadas para se conseguir, tecnicamente, a padronização e a usabilidade que são necessários para o ganho de performance no desenvolvimento de software.
![Page 6: Programação orientada a objetos em delphi](https://reader033.fdocument.pub/reader033/viewer/2022042614/5575f4d5d8b42a81158b4615/html5/thumbnails/6.jpg)
O que devo saber sobre a teoria?
● Classes, métodos e atributos: São nomes novos para coisas velhas que você já conhece! Muda o contexto, mas o conceito é o mesmo.
![Page 7: Programação orientada a objetos em delphi](https://reader033.fdocument.pub/reader033/viewer/2022042614/5575f4d5d8b42a81158b4615/html5/thumbnails/7.jpg)
Entendendo como se faz
Caelum
![Page 8: Programação orientada a objetos em delphi](https://reader033.fdocument.pub/reader033/viewer/2022042614/5575f4d5d8b42a81158b4615/html5/thumbnails/8.jpg)
Entendendo como se faz
● Classe: É a especificação, o projeto.
● Objeto: É a instancia, em memória, da classe. Este é o objeto de trabalho!
![Page 9: Programação orientada a objetos em delphi](https://reader033.fdocument.pub/reader033/viewer/2022042614/5575f4d5d8b42a81158b4615/html5/thumbnails/9.jpg)
Entendendo como se fazUnit UConta;
Interface
Uses SysUtils;
Type TConta = Class public numero: integer; dono: String; saldo: real; limite: real; End;
Implementation
//...
![Page 10: Programação orientada a objetos em delphi](https://reader033.fdocument.pub/reader033/viewer/2022042614/5575f4d5d8b42a81158b4615/html5/thumbnails/10.jpg)
Entendendo como se fazProcedure Teste;var vConta: TConta; vSaldo_Total: real;begin vConta:= Tconta.Create; vConta.saldo := 0; vConta.dono := 'José';
vSaldo_Total:= vConta.Saldo + vConta.Limite;
vConta.free;
// FreeAndNil(vConta);end;
![Page 11: Programação orientada a objetos em delphi](https://reader033.fdocument.pub/reader033/viewer/2022042614/5575f4d5d8b42a81158b4615/html5/thumbnails/11.jpg)
Entendendo como se faz
● Atributos: São características da classe. São variáveis que armazenam dados referente ao objeto.
![Page 12: Programação orientada a objetos em delphi](https://reader033.fdocument.pub/reader033/viewer/2022042614/5575f4d5d8b42a81158b4615/html5/thumbnails/12.jpg)
Entendendo como se fazUnit UConta;//...Type TConta = Class public numero: integer; dono: String; saldo: real; limite: real;
public Procedure saca(valor: real); Procedure deposita(valor: real); End;
Implementation
//...
![Page 13: Programação orientada a objetos em delphi](https://reader033.fdocument.pub/reader033/viewer/2022042614/5575f4d5d8b42a81158b4615/html5/thumbnails/13.jpg)
Entendendo como se faz//...
Implementation
Procedure TConta.saca(valor: real);var vNovoSaldo: real;begin vNovoSaldo := saldo - valor; saldo := vNovoSaldo;end;
Procedure TConta.deposita(valor: real);begin saldo := saldo + valor;end;
//...
![Page 14: Programação orientada a objetos em delphi](https://reader033.fdocument.pub/reader033/viewer/2022042614/5575f4d5d8b42a81158b4615/html5/thumbnails/14.jpg)
Entendendo como se fazProcedure Teste;var vConta: TConta; vSaldo_Total: real;begin vConta:= Tconta.Create; vConta.saldo := 0; vConta.dono := 'José';
vConta.deposita(200);
vConta.saca(50);
vSaldo_Total:= vConta.Saldo + vConta.Limite;
vConta.free;
end;
![Page 15: Programação orientada a objetos em delphi](https://reader033.fdocument.pub/reader033/viewer/2022042614/5575f4d5d8b42a81158b4615/html5/thumbnails/15.jpg)
Entendendo como se faz
● Métodos: São ações da classe. São funções ou procedimentos necessários para a execução dos objetivos da classe.
![Page 16: Programação orientada a objetos em delphi](https://reader033.fdocument.pub/reader033/viewer/2022042614/5575f4d5d8b42a81158b4615/html5/thumbnails/16.jpg)
Entendendo como se faz
● Objetos: Lembre-se que, ao instanciar uma classe, você está fazendo referência a endereços de memória.
● Cuidado ao referencias objetos e limpa-los da memória.
![Page 17: Programação orientada a objetos em delphi](https://reader033.fdocument.pub/reader033/viewer/2022042614/5575f4d5d8b42a81158b4615/html5/thumbnails/17.jpg)
Entendendo como se fazProcedure Teste;var vC1, vC2, vC3: TConta;begin vC1:= Tconta.Create; vC1.dono := 'José'; vC2:= Tconta.Create; vC2.dono := 'Maria';
vC3:=vC1; vC3.deposita(100);
vC3:=vC2; vC3.deposita(10); vC3:=nil; freeandnil(vC1); freeandnil(vC2);end;
![Page 18: Programação orientada a objetos em delphi](https://reader033.fdocument.pub/reader033/viewer/2022042614/5575f4d5d8b42a81158b4615/html5/thumbnails/18.jpg)
Entendendo como se fazProcedure Teste;var vC1, vC2: TConta;begin vC1:= Tconta.Create; vC1.dono := 'Emilia'; vC2:= Tconta.Create; vC2.dono := 'Emilia';
if vC1 = vC2 then begin // são iguais! end; freeandnil(vC1); freeandnil(vC2);end;
![Page 19: Programação orientada a objetos em delphi](https://reader033.fdocument.pub/reader033/viewer/2022042614/5575f4d5d8b42a81158b4615/html5/thumbnails/19.jpg)
Entendendo como se faz
● Aproveite-se das referências de memória para otimizar seus métodos.
![Page 20: Programação orientada a objetos em delphi](https://reader033.fdocument.pub/reader033/viewer/2022042614/5575f4d5d8b42a81158b4615/html5/thumbnails/20.jpg)
Entendendo como se fazUnit UConta;//...Type TConta = Class; TConta = Class public numero: integer; dono: String; saldo: real; limite: real;
public Procedure saca(valor: real); Procedure deposita(valor: real); Procedure transfere(conta: TConta; valor: real); End;
Implementation
//...
![Page 21: Programação orientada a objetos em delphi](https://reader033.fdocument.pub/reader033/viewer/2022042614/5575f4d5d8b42a81158b4615/html5/thumbnails/21.jpg)
Entendendo como se faz//...
Implementation
Procedure TConta.transfere(conta: TConta; valor: real);begin saldo := saldo - valor; conta.saldo := saldo + valor;end;
//ou
Procedure TConta.transfere(conta: TConta; valor: real);begin saldo.saca(valor); conta.deposita(valor);end;
//...
![Page 22: Programação orientada a objetos em delphi](https://reader033.fdocument.pub/reader033/viewer/2022042614/5575f4d5d8b42a81158b4615/html5/thumbnails/22.jpg)
Entendendo como se faz
● Pode-se deixar sua classe mais inteligente e robusta com a utilização de construtores e destruidores.
![Page 23: Programação orientada a objetos em delphi](https://reader033.fdocument.pub/reader033/viewer/2022042614/5575f4d5d8b42a81158b4615/html5/thumbnails/23.jpg)
Entendendo como se fazUnit UConta;
Type TConta = Class; TConta = Class public numero: integer; dono: String; saldo: real; limite: real;
public Constructor Create; Destructor Free; Procedure saca(valor: real); Procedure deposita(valor: real); Procedure transfere(conta: TConta; valor: real); End;
Implementation
//...
![Page 24: Programação orientada a objetos em delphi](https://reader033.fdocument.pub/reader033/viewer/2022042614/5575f4d5d8b42a81158b4615/html5/thumbnails/24.jpg)
Entendendo como se faz//...
Implementation
Procedure TConta.Create;begin numero := 0; dono:= ''; saldo:= 0; limite: 1000;end;
Procedure TConta.Free;begin // Tratamento de limpezaend;
//...
![Page 25: Programação orientada a objetos em delphi](https://reader033.fdocument.pub/reader033/viewer/2022042614/5575f4d5d8b42a81158b4615/html5/thumbnails/25.jpg)
Entendendo como se faz
● Aproveite a estrutura e pense sempre de maneira modular.
● Cada classe deve ser especialista no que faz!
![Page 26: Programação orientada a objetos em delphi](https://reader033.fdocument.pub/reader033/viewer/2022042614/5575f4d5d8b42a81158b4615/html5/thumbnails/26.jpg)
Entendendo como se faz
Conta
+ numero: integer;+ dono: TTitular;+ saldo: real;+ limite: real;
+ Constructor Create;+ Destructor Free;+ saca(valor: real);+ deposita(valor: real);+ transfere(conta: TConta; valor: real);
Titular
+ nome: String;+ endereco: String;+ cpf: String;
+ Constructor Create;+ Destructor Free;
![Page 27: Programação orientada a objetos em delphi](https://reader033.fdocument.pub/reader033/viewer/2022042614/5575f4d5d8b42a81158b4615/html5/thumbnails/27.jpg)
Entendendo como se fazUnit UTitular;
Type TTitular = Class public nome: string; endereco: string; cpf: string;
public Constructor Create; Destructor Free; End;
Implementation
//...
![Page 28: Programação orientada a objetos em delphi](https://reader033.fdocument.pub/reader033/viewer/2022042614/5575f4d5d8b42a81158b4615/html5/thumbnails/28.jpg)
Entendendo como se fazUnit UConta;
Interface
Uses Utitular;Type TConta = Class; TConta = Class public numero: integer; dono: TTitular; saldo: real; limite: real;
public Constructor Create; Destructor Free; Procedure saca(valor: real); Procedure deposita(valor: real); Procedure transfere(conta: TConta; valor: real); End;
Implementation
//...
![Page 29: Programação orientada a objetos em delphi](https://reader033.fdocument.pub/reader033/viewer/2022042614/5575f4d5d8b42a81158b4615/html5/thumbnails/29.jpg)
Entendendo como se faz//...
Implementation
Procedure TConta.Create;begin numero := 0; saldo:= 0; limite: 1000; dono:= TTitular.Create;end;
Procedure TConta.Free;begin dono.free;end;
//...
![Page 30: Programação orientada a objetos em delphi](https://reader033.fdocument.pub/reader033/viewer/2022042614/5575f4d5d8b42a81158b4615/html5/thumbnails/30.jpg)
Entendendo como se fazProcedure Teste;var vC1: TConta;begin vC1:= Tconta.Create; vC1.dono.nome := 'Joao'; vC1.dono.CPF := '11122233300'; VC1.saldo:=0;
VC1.deposita(100); freeandnil(vC1);end;
![Page 31: Programação orientada a objetos em delphi](https://reader033.fdocument.pub/reader033/viewer/2022042614/5575f4d5d8b42a81158b4615/html5/thumbnails/31.jpg)
Padrão de programação
● Pode-se adotar padrões de programação orientada a objetos para facilitar o trabalho em equipe.
![Page 32: Programação orientada a objetos em delphi](https://reader033.fdocument.pub/reader033/viewer/2022042614/5575f4d5d8b42a81158b4615/html5/thumbnails/32.jpg)
Padrão de programaçãoEstrutura de classe em Delphi
//-------------------------------------------------------//<Nome do sistema ou conjunto de classes> - <data>//<nome da classe>//<Descrição da classe>//-------------------------------------------------------Unit UTTeste; interface Uses Sysutils, ZDataset, ZConnection, Classes; Type TTeste = Class private VARIAVEIS DE ATRIBUTOS MÉTODOS PRIVADOS: GETS E SETS MÉTODOS PRIVADOS DIVERSOS public CONSTRUTOR DESTRUTOR MÉTODOS PÚBLICOS
Estrutura de classe em Delphi
public DEFINIÇÃO DE PROPRIEDADES, GETS E SETS End;
implementation IMPLEMENTAÇÃO DOS CONSTRUTORES IMPLEMENTAÇÃO DOS DESTRUTORES IMPLEMENTAÇÃO DE MÉTODOS PRIVADOS IMPLEMENTAÇÃO DE MÉTODOS PUBLICOS End;
![Page 33: Programação orientada a objetos em delphi](https://reader033.fdocument.pub/reader033/viewer/2022042614/5575f4d5d8b42a81158b4615/html5/thumbnails/33.jpg)
Padrão de programaçãoUnit UConta;InterfaceUses Utitular;
Type TConta = Class; TConta = Class private a_numero: integer; a_dono: TTitular; a_saldo: real; a_limite: real; private Procedure set_numero(Const Value: integer); Procedure set_dono(Const Value: TTitular); Procedure set_saldo(Const Value: real); Procedure set_limite(Const Value: real);
//...
![Page 34: Programação orientada a objetos em delphi](https://reader033.fdocument.pub/reader033/viewer/2022042614/5575f4d5d8b42a81158b4615/html5/thumbnails/34.jpg)
Padrão de programação//... Function get_numero: integer; Function get_dono: TTitular; Function get_saldo: real; Function get_limite: real;
public Constructor Create; Destructor Free; Procedure saca(valor: real); Procedure deposita(valor: real); Procedure transfere(conta: TConta; valor: real);
//...
![Page 35: Programação orientada a objetos em delphi](https://reader033.fdocument.pub/reader033/viewer/2022042614/5575f4d5d8b42a81158b4615/html5/thumbnails/35.jpg)
Padrão de programação//... public Property Numero: integer read get_numero write set_numero; Property Dono: TTitular read get_dono write set_dono; Property Saldo: real read get_saldo write set_saldo; Property Limite: real read get_limite write set_limite;
Implementation
//...
![Page 36: Programação orientada a objetos em delphi](https://reader033.fdocument.pub/reader033/viewer/2022042614/5575f4d5d8b42a81158b4615/html5/thumbnails/36.jpg)
Padrão de programação//...
Procedure TConta.Create;begin a_numero := 0; a_saldo:= 0; a_limite: 1000; a_dono:= TTitular.Create;end;
Procedure TConta.Free;begin a_dono.free;end;
//...
![Page 37: Programação orientada a objetos em delphi](https://reader033.fdocument.pub/reader033/viewer/2022042614/5575f4d5d8b42a81158b4615/html5/thumbnails/37.jpg)
Padrão de programação//...
Procedure TConta.saca(valor: real);var vNovoSaldo: real;begin vNovoSaldo := a_saldo - valor; a_saldo := vNovoSaldo;end;
Procedure TConta.deposita(valor: real);begin a_saldo := a_saldo + valor;end;
//...
![Page 38: Programação orientada a objetos em delphi](https://reader033.fdocument.pub/reader033/viewer/2022042614/5575f4d5d8b42a81158b4615/html5/thumbnails/38.jpg)
Padrão de programação//...
Procedure TConta.set_numero(Const Value: integer);begin a_numero := value;end;
Procedure TConta.set_dono(Const Value: TTitular);begin a_dono := value;end;
Procedure TConta.set_saldo(Const Value: real);begin a_saldo := value;end;
Procedure TConta.set_limite(Const Value: real);begin a_limite := value;end;
//...
![Page 39: Programação orientada a objetos em delphi](https://reader033.fdocument.pub/reader033/viewer/2022042614/5575f4d5d8b42a81158b4615/html5/thumbnails/39.jpg)
Padrão de programação//...
Function TConta.get_numero: integer;begin result := a_numero;end;
Function TConta.get_dono: TTitular;begin result := a_dono;end;
Function TConta.get_saldo: real;begin result := a_saldo;end;
Function TConta.get_limite: real;begin result := a_limite;end;
End.
![Page 40: Programação orientada a objetos em delphi](https://reader033.fdocument.pub/reader033/viewer/2022042614/5575f4d5d8b42a81158b4615/html5/thumbnails/40.jpg)
Concluindo
● Toda a mudança requer um período de adaptação.
● Os ganhos da POO são muitos, mas é necessário prática, disciplina e paciência para quem ainda se inicia na metodologia.
![Page 41: Programação orientada a objetos em delphi](https://reader033.fdocument.pub/reader033/viewer/2022042614/5575f4d5d8b42a81158b4615/html5/thumbnails/41.jpg)
Bibliografia● Caelum. Apostila Java e Orientação a objetos. http://www.caelum.com.br/apostila-java-
orientacao-objetos/orientacao-a-objetos-basica/
● MELO, Ana Cristina, Desenvolvendo Aplicações com UML 2.0: do conceitual à implementação / Ana Cristina Melo. – 2. ed. – Rio de Janeiro: Brasport, 2004.
● BORLAND, Treinamento Oficial, Delphi 2005 – Application Development with Delphi for Win32 – 2005.
● DEITEL, H. M. Deitel, C# - Como Programar – São Paulo: Pearson Education do Brasil LTDA, 2003.