Programação orientada a objetos em delphi

6,913 views

Published on

Workshop de sobre programação orientada a objetos para Delphi ministrado para a Hipcom Informática.

Published in: Education
1 Comment
6 Likes
Statistics
Notes
No Downloads
Views
Total views
6,913
On SlideShare
0
From Embeds
0
Number of Embeds
96
Actions
Shares
0
Downloads
328
Comments
1
Likes
6
Embeds 0
No embeds

No notes for slide

Programação orientada a objetos em delphi

  1. 1. Programaçãoorientada aobjetos emDelphiAbrindo sua mente para um mundo novo...mas nem tanto!
  2. 2. Mudar!? Para quê???Se você chegou até aqui, significa que vocêprocura por otimizar seu processo detrabalho!Então deixe o comodismo e o preconceito de lado!FreeDigitalPhotos.net
  3. 3. Mas preciso estudar um monte deteorias novas?Orientação a Objeto é um conceito antigo.Mas a melhor maneira de aprender é usando!Polimorfismo, herançae encapsulamento sãoconceitos importantes!Mas a prática leva àperfeição!FreeDigitalPhotos.net
  4. 4. O que devo saber sobre a teoria?● Orientação a objetos: Estrutura deagrupamento de dados e funções que tempor objetivo alta padronização eusabilidade de informações.
  5. 5. O que devo saber sobre a teoria?● Polimorfismo, herança e encapsulamento:São metodologias utilizadas para seconseguir, tecnicamente, a padronização ea usabilidade que são necessários para oganho de performance no desenvolvimentode software.
  6. 6. O que devo saber sobre a teoria?● Classes, métodos e atributos: São nomesnovos para coisas velhas que você jáconhece! Muda o contexto, mas o conceitoé o mesmo.
  7. 7. Entendendo como se fazCaelum
  8. 8. Entendendo como se faz● Classe: É a especificação, o projeto.● Objeto: É a instancia, em memória, daclasse. Este é o objeto de trabalho!
  9. 9. Entendendo como se fazUnit UConta;InterfaceUses SysUtils;TypeTConta = Classpublicnumero: integer;dono: String;saldo: real;limite: real;End;Implementation//...
  10. 10. Entendendo como se fazProcedure Teste;varvConta: TConta;vSaldo_Total: real;beginvConta:= Tconta.Create;vConta.saldo := 0;vConta.dono := José;vSaldo_Total:= vConta.Saldo + vConta.Limite;vConta.free;// FreeAndNil(vConta);end;
  11. 11. Entendendo como se faz● Atributos: São características da classe.São variáveis que armazenam dadosreferente ao objeto.
  12. 12. Entendendo como se fazUnit UConta;//...TypeTConta = Classpublicnumero: integer;dono: String;saldo: real;limite: real;publicProcedure saca(valor: real);Procedure deposita(valor: real);End;Implementation//...
  13. 13. Entendendo como se faz//...ImplementationProcedure TConta.saca(valor: real);var vNovoSaldo: real;beginvNovoSaldo := saldo - valor;saldo := vNovoSaldo;end;Procedure TConta.deposita(valor: real);beginsaldo := saldo + valor;end;//...
  14. 14. Entendendo como se fazProcedure Teste;varvConta: TConta;vSaldo_Total: real;beginvConta:= Tconta.Create;vConta.saldo := 0;vConta.dono := José;vConta.deposita(200);vConta.saca(50);vSaldo_Total:= vConta.Saldo + vConta.Limite;vConta.free;end;
  15. 15. Entendendo como se faz● Métodos: São ações da classe. Sãofunções ou procedimentos necessáriospara a execução dos objetivos da classe.
  16. 16. Entendendo como se faz● Objetos: Lembre-se que, ao instanciar umaclasse, você está fazendo referência aendereços de memória.● Cuidado ao referencias objetos e limpa-losda memória.
  17. 17. Entendendo como se fazProcedure Teste;varvC1, vC2, vC3: TConta;beginvC1:= 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;
  18. 18. Entendendo como se fazProcedure Teste;varvC1, vC2: TConta;beginvC1:= 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;
  19. 19. Entendendo como se faz● Aproveite-se das referências de memóriapara otimizar seus métodos.
  20. 20. Entendendo como se fazUnit UConta;//...TypeTConta = Class;TConta = Classpublicnumero: integer;dono: String;saldo: real;limite: real;publicProcedure saca(valor: real);Procedure deposita(valor: real);Procedure transfere(conta: TConta; valor: real);End;Implementation//...
  21. 21. Entendendo como se faz//...ImplementationProcedure TConta.transfere(conta: TConta; valor: real);beginsaldo := saldo - valor;conta.saldo := saldo + valor;end;//ouProcedure TConta.transfere(conta: TConta; valor: real);beginsaldo.saca(valor);conta.deposita(valor);end;//...
  22. 22. Entendendo como se faz● Pode-se deixar sua classe mais inteligentee robusta com a utilização de construtorese destruidores.
  23. 23. Entendendo como se fazUnit UConta;TypeTConta = Class;TConta = Classpublicnumero: integer;dono: String;saldo: real;limite: real;publicConstructor Create;Destructor Free;Procedure saca(valor: real);Procedure deposita(valor: real);Procedure transfere(conta: TConta; valor: real);End;Implementation//...
  24. 24. Entendendo como se faz//...ImplementationProcedure TConta.Create;beginnumero := 0;dono:= ;saldo:= 0;limite: 1000;end;Procedure TConta.Free;begin// Tratamento de limpezaend;//...
  25. 25. Entendendo como se faz● Aproveite a estrutura e pense sempre demaneira modular.● Cada classe deve ser especialista no quefaz!
  26. 26. Entendendo como se fazConta+ 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;
  27. 27. Entendendo como se fazUnit UTitular;TypeTTitular = Classpublicnome: string;endereco: string;cpf: string;publicConstructor Create;Destructor Free;End;Implementation//...
  28. 28. Entendendo como se fazUnit UConta;InterfaceUses Utitular;TypeTConta = Class;TConta = Classpublicnumero: integer;dono: TTitular;saldo: real;limite: real;publicConstructor Create;Destructor Free;Procedure saca(valor: real);Procedure deposita(valor: real);Procedure transfere(conta: TConta; valor: real);End;Implementation//...
  29. 29. Entendendo como se faz//...ImplementationProcedure TConta.Create;beginnumero := 0;saldo:= 0;limite: 1000;dono:= TTitular.Create;end;Procedure TConta.Free;begindono.free;end;//...
  30. 30. Entendendo como se fazProcedure Teste;varvC1: TConta;beginvC1:= Tconta.Create;vC1.dono.nome := Joao;vC1.dono.CPF := 11122233300;VC1.saldo:=0;VC1.deposita(100);freeandnil(vC1);end;
  31. 31. Padrão de programação● Pode-se adotar padrões de programaçãoorientada a objetos para facilitar otrabalho em equipe.
  32. 32. 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;interfaceUses Sysutils, ZDataset, ZConnection, Classes;TypeTTeste = ClassprivateVARIAVEIS DE ATRIBUTOSMÉTODOS PRIVADOS: GETS E SETSMÉTODOS PRIVADOS DIVERSOSpublicCONSTRUTORDESTRUTORMÉTODOS PÚBLICOSEstrutura de classe em DelphipublicDEFINIÇÃO DE PROPRIEDADES,GETS E SETSEnd;implementationIMPLEMENTAÇÃO DOS CONSTRUTORESIMPLEMENTAÇÃO DOS DESTRUTORESIMPLEMENTAÇÃO DE MÉTODOSPRIVADOSIMPLEMENTAÇÃO DE MÉTODOSPUBLICOSEnd;
  33. 33. Padrão de programaçãoUnit UConta;InterfaceUses Utitular;TypeTConta = Class;TConta = Classprivatea_numero: integer;a_dono: TTitular;a_saldo: real;a_limite: real;privateProcedure set_numero(Const Value: integer);Procedure set_dono(Const Value: TTitular);Procedure set_saldo(Const Value: real);Procedure set_limite(Const Value: real);//...
  34. 34. Padrão de programação//...Function get_numero: integer;Function get_dono: TTitular;Function get_saldo: real;Function get_limite: real;publicConstructor Create;Destructor Free;Procedure saca(valor: real);Procedure deposita(valor: real);Procedure transfere(conta: TConta; valor: real);//...
  35. 35. Padrão de programação//...publicProperty Numero: integer read get_numero writeset_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//...
  36. 36. Padrão de programação//...Procedure TConta.Create;begina_numero := 0;a_saldo:= 0;a_limite: 1000;a_dono:= TTitular.Create;end;Procedure TConta.Free;begina_dono.free;end;//...
  37. 37. Padrão de programação//...Procedure TConta.saca(valor: real);var vNovoSaldo: real;beginvNovoSaldo := a_saldo - valor;a_saldo := vNovoSaldo;end;Procedure TConta.deposita(valor: real);begina_saldo := a_saldo + valor;end;//...
  38. 38. Padrão de programação//...Procedure TConta.set_numero(Const Value: integer);begina_numero := value;end;Procedure TConta.set_dono(Const Value: TTitular);begina_dono := value;end;Procedure TConta.set_saldo(Const Value: real);begina_saldo := value;end;Procedure TConta.set_limite(Const Value: real);begina_limite := value;end;//...
  39. 39. Padrão de programação//...Function TConta.get_numero: integer;beginresult := a_numero;end;Function TConta.get_dono: TTitular;beginresult := a_dono;end;Function TConta.get_saldo: real;beginresult := a_saldo;end;Function TConta.get_limite: real;beginresult := a_limite;end;End.
  40. 40. Concluindo● Toda a mudança requer um período deadaptação.● Os ganhos da POO são muitos, mas énecessário prática, disciplina e paciênciapara quem ainda se inicia na metodologia.
  41. 41. 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.

×