SlideShare uma empresa Scribd logo
Programação
orientada a
objetos em
Delphi
Abrindo sua mente para um mundo novo...
mas nem tanto!
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
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
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.
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.
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.
Entendendo como se faz
Caelum
Entendendo como se faz
● Classe: É a especificação, o projeto.
● Objeto: É a instancia, em memória, da
classe. Este é o objeto de trabalho!
Entendendo como se faz
Unit UConta;
Interface
Uses SysUtils;
Type
TConta = Class
public
numero: integer;
dono: String;
saldo: real;
limite: real;
End;
Implementation
//...
Entendendo como se faz
Procedure 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;
Entendendo como se faz
● Atributos: São características da classe.
São variáveis que armazenam dados
referente ao objeto.
Entendendo como se faz
Unit UConta;
//...
Type
TConta = Class
public
numero: integer;
dono: String;
saldo: real;
limite: real;
public
Procedure saca(valor: real);
Procedure deposita(valor: real);
End;
Implementation
//...
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;
//...
Entendendo como se faz
Procedure 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;
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.
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.
Entendendo como se faz
Procedure 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;
Entendendo como se faz
Procedure 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;
Entendendo como se faz
● Aproveite-se das referências de memória
para otimizar seus métodos.
Entendendo como se faz
Unit 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
//...
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;
//...
Entendendo como se faz
● Pode-se deixar sua classe mais inteligente
e robusta com a utilização de construtores
e destruidores.
Entendendo como se faz
Unit 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
//...
Entendendo como se faz
//...
Implementation
Procedure TConta.Create;
begin
numero := 0;
dono:= '';
saldo:= 0;
limite: 1000;
end;
Procedure TConta.Free;
begin
// Tratamento de limpeza
end;
//...
Entendendo como se faz
● Aproveite a estrutura e pense sempre de
maneira modular.
● Cada classe deve ser especialista no que
faz!
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;
Entendendo como se faz
Unit UTitular;
Type
TTitular = Class
public
nome: string;
endereco: string;
cpf: string;
public
Constructor Create;
Destructor Free;
End;
Implementation
//...
Entendendo como se faz
Unit 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
//...
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;
//...
Entendendo como se faz
Procedure 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;
Padrão de programação
● Pode-se adotar padrões de programação
orientada a objetos para facilitar o
trabalho em equipe.
Padrão de programação
Estrutura 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;
Padrão de programação
Unit UConta;
Interface
Uses 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);
//...
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);
//...
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
//...
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;
//...
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;
//...
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;
//...
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.
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.
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.

Mais conteúdo relacionado

PDF
Orientação a Objetos no Delphi - Controle de Estoque (II)
PDF
Orientação a Objetos no Delphi - Por onde começar (I)
PDF
Orientação a Objetos no Delphi - Controle de Estoque (III)
PPT
Presentation Spring, Spring MVC
PPTX
Modele mvc
PDF
Cours Html.pdf
PPTX
Reactjs workshop
PDF
Angular Best Practices - Perfomatix
Orientação a Objetos no Delphi - Controle de Estoque (II)
Orientação a Objetos no Delphi - Por onde começar (I)
Orientação a Objetos no Delphi - Controle de Estoque (III)
Presentation Spring, Spring MVC
Modele mvc
Cours Html.pdf
Reactjs workshop
Angular Best Practices - Perfomatix

Mais procurados (20)

PPTX
Les modèles NoSQL
PDF
Dba oracle-v1
PPTX
Introduction à React
PPTX
ESTEM_ReactJS_S1.pptx
PDF
ReactJS presentation
PPTX
Spring boot Introduction
PPTX
Html 5
PDF
Spring Meetup Paris - Back to the basics of Spring (Boot)
PPTX
PL/Sql et Sécurité des bases de données
PDF
React-cours.pdf
PPT
Hibernate
PDF
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
PPTX
React JS part 1
ODP
Formation PHP
PPTX
Mongoose and MongoDB 101
PPSX
Spring - Part 1 - IoC, Di and Beans
PPTX
Spring boot
PDF
스프링캠프 2016 발표 - Deep dive into spring boot autoconfiguration
PDF
Chapitre 4 no sql
PPTX
Introduction to HTML+CSS+Javascript.pptx
Les modèles NoSQL
Dba oracle-v1
Introduction à React
ESTEM_ReactJS_S1.pptx
ReactJS presentation
Spring boot Introduction
Html 5
Spring Meetup Paris - Back to the basics of Spring (Boot)
PL/Sql et Sécurité des bases de données
React-cours.pdf
Hibernate
Développement d'un site web jee de e commerce basé sur spring (m.youssfi)
React JS part 1
Formation PHP
Mongoose and MongoDB 101
Spring - Part 1 - IoC, Di and Beans
Spring boot
스프링캠프 2016 발표 - Deep dive into spring boot autoconfiguration
Chapitre 4 no sql
Introduction to HTML+CSS+Javascript.pptx
Anúncio

Destaque (20)

PDF
Oo delphi
PDF
Apostila delphi rad studio 2007
PPTX
Linguagem Delphi-Introdução
PDF
PDF
Git & Delphi
PDF
Design Pattern MVC – Arquitetura de Software Coesa e Flexível
PDF
Curso De Programação Em DelPhi
PPTX
Bate papo sobre desenvolvimento de spftware
PPTX
Rad Studio 10 com Android e Unidac
PPTX
FireDAC: do básico ao avançado - Embarcadero Conference 2014
PPTX
ListBox e Listview em Apps Mobile - Embarcadero Conference 2013
PPTX
Hora GTI - Top 10 Tendências Mobile para 2015 e 2016
PPT
FireDAC - Embarcadero Conference 2015
PPTX
Programação aula003
PPTX
Projeto de Sistemas - Aula005
PPTX
Aplicativo aula006
PPTX
Sistema Operacional - Pratica002
PPTX
Sistema Operacional - Pratica003
PPTX
Programação-Aula004
PPTX
Dados e Serviços Remotos via DataSnap
Oo delphi
Apostila delphi rad studio 2007
Linguagem Delphi-Introdução
Git & Delphi
Design Pattern MVC – Arquitetura de Software Coesa e Flexível
Curso De Programação Em DelPhi
Bate papo sobre desenvolvimento de spftware
Rad Studio 10 com Android e Unidac
FireDAC: do básico ao avançado - Embarcadero Conference 2014
ListBox e Listview em Apps Mobile - Embarcadero Conference 2013
Hora GTI - Top 10 Tendências Mobile para 2015 e 2016
FireDAC - Embarcadero Conference 2015
Programação aula003
Projeto de Sistemas - Aula005
Aplicativo aula006
Sistema Operacional - Pratica002
Sistema Operacional - Pratica003
Programação-Aula004
Dados e Serviços Remotos via DataSnap
Anúncio

Semelhante a Programação orientada a objetos em delphi (20)

PPT
Introdução à análise orientada a objetos parte 1
PPT
Introdução à análise orientada a objetos parte 1
PPTX
Dojo tuba delphi
PPT
Classes e Objectos JAVA
DOCX
PDF
Curso avançado de c++ em portugues
PPTX
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
PPTX
3.1 orientação objetos
PPTX
Java6.pptx conceitos sobre java, linguagem
PDF
Curso java 03 - métodos e parâmetros
PDF
Oo presentation básica
PDF
Programação OO - Java
PDF
PPTX
Paradigma de orientação a objetos -
PDF
POO - 01 - Introdução ao Paradigma Orientado a Objetos
PDF
POO.pdf
ODP
Java 08 Modificadores Acesso E Membros De Classe
PPTX
Programação C - Aula 1
PPTX
Curso de Java 4 - (Orientação a Objetos).pptx
PPT
Programação Orientada a Objeto(POO)
Introdução à análise orientada a objetos parte 1
Introdução à análise orientada a objetos parte 1
Dojo tuba delphi
Classes e Objectos JAVA
Curso avançado de c++ em portugues
Estrutura de Dados em Java (Introdução à Programação Orientada a Objetos)
3.1 orientação objetos
Java6.pptx conceitos sobre java, linguagem
Curso java 03 - métodos e parâmetros
Oo presentation básica
Programação OO - Java
Paradigma de orientação a objetos -
POO - 01 - Introdução ao Paradigma Orientado a Objetos
POO.pdf
Java 08 Modificadores Acesso E Membros De Classe
Programação C - Aula 1
Curso de Java 4 - (Orientação a Objetos).pptx
Programação Orientada a Objeto(POO)

Mais de Helder Lopes (20)

PDF
Resumo: Oportunidade de Negocio Herbalife
PDF
Sql básico - Teoria e prática: Um grande resumo
PDF
Desenvolvimento web com vs2012: Uma visão geral
PDF
Gerenciamento de Infra-Estrutura - Aula 5 - contexto organizacional
PDF
Fundamentos de Sistemas Operacionais - Aula 3 - Arquiteturas de Sistemas Oper...
PDF
Fundamentos de Sistemas Operacionais - Aula 2 - Conceitos Iniciais
PDF
Gerenciamento de Infra-Estrutura - Aula 2 - Definições Utilizadas em Gerencia...
PDF
Gerenciamento de Infra-Estrutura - Aula 3 - Ferramentas de Gerenciamento - Co...
PDF
Aplicação de Redes Neurais Artificiais Paraconsistentes no auxílio do diagnós...
PDF
Estatística - Aula 2 - Estatística descritiva
PDF
Fundamentos de Sistemas Operacionais - Aula 1 - Introdução à disciplina
PDF
Gerenciamento de Infra-Estrutura - Aula 3 - Conceitos sobre SLA & SLM
PDF
Melhorando o desempenho de suas consultas no MySql
PDF
Modelagem de Sistemas de Informação
PDF
Ferramentas de Gerenciamento de Rede
PDF
Gerenciamento de Infra-Estrutura - Aula 1 - Introdução à disciplina
PDF
Gerenciamento e administração de Redes
PDF
Redes de computadores e Telecomunicações
PDF
Administração de Banco de Dados
PDF
Sistemas para Internet e Software Livre
Resumo: Oportunidade de Negocio Herbalife
Sql básico - Teoria e prática: Um grande resumo
Desenvolvimento web com vs2012: Uma visão geral
Gerenciamento de Infra-Estrutura - Aula 5 - contexto organizacional
Fundamentos de Sistemas Operacionais - Aula 3 - Arquiteturas de Sistemas Oper...
Fundamentos de Sistemas Operacionais - Aula 2 - Conceitos Iniciais
Gerenciamento de Infra-Estrutura - Aula 2 - Definições Utilizadas em Gerencia...
Gerenciamento de Infra-Estrutura - Aula 3 - Ferramentas de Gerenciamento - Co...
Aplicação de Redes Neurais Artificiais Paraconsistentes no auxílio do diagnós...
Estatística - Aula 2 - Estatística descritiva
Fundamentos de Sistemas Operacionais - Aula 1 - Introdução à disciplina
Gerenciamento de Infra-Estrutura - Aula 3 - Conceitos sobre SLA & SLM
Melhorando o desempenho de suas consultas no MySql
Modelagem de Sistemas de Informação
Ferramentas de Gerenciamento de Rede
Gerenciamento de Infra-Estrutura - Aula 1 - Introdução à disciplina
Gerenciamento e administração de Redes
Redes de computadores e Telecomunicações
Administração de Banco de Dados
Sistemas para Internet e Software Livre

Último (20)

PDF
Cantores.pdf-Deslandes, Tinoco e Zambujo
PDF
GESTÃO DA FASE PRÉ-ANALÍTICA- Recomendações da SBPC-ML (3).pdf
PDF
A relação entre funções executivas e desempenho acadêmico em crianças com Tra...
PDF
FLUXOGRAMA CLASSE lll - Acesso estritamente proximal.pdf
PPTX
Lição 8 EBD.pptxtudopossonaquelequemimfortalece
PDF
Ementa 2 semestre PEI Orientação de estudo
PDF
O retorno a origem (islã Islamismo)
PPT
sistema reprodutor para turmas do oitavo ano
PPTX
HISTÓRIA DO BRASIL - anos de Democracia.pptx
PDF
Uma Introdução às Ciências do Alcorão (Islam)
PPTX
disciplulado curso preparatorio para novos
PPTX
ELEMENTOS E FUNÇÕES DE LINGUAGEM (EMOTIVA, REFERENCIAL, CONATIVA, POÉTICA, FÁ...
PPTX
Slides Lição 7, CPAD, Uma Igreja Que Não Teme A Perseguição, 3Tr25.pptx
PPTX
Aula 13 - Tópico Frasal - Argumentação.pptx
PDF
Organizador Curricular da Educação em Tempo Integral.pdf
PPTX
Trabalho Cidades sustentáveis ou Utopia.pptx
PPTX
MENDEL - Aula sobre Mendel - Genética EM
PPTX
QuestõesENEMVESTIBULARPARAESTUDOSEAPRENDIZADO.pptx
PPTX
Slide_Macronutrientes e Antinutrientes da Dieta Humana.pptx
PDF
COMO OS CONTOS DE FADAS REFLETEM ARQUÉTIPOS_MEDOS E DESEJOS DO INCONSCIENTE H...
Cantores.pdf-Deslandes, Tinoco e Zambujo
GESTÃO DA FASE PRÉ-ANALÍTICA- Recomendações da SBPC-ML (3).pdf
A relação entre funções executivas e desempenho acadêmico em crianças com Tra...
FLUXOGRAMA CLASSE lll - Acesso estritamente proximal.pdf
Lição 8 EBD.pptxtudopossonaquelequemimfortalece
Ementa 2 semestre PEI Orientação de estudo
O retorno a origem (islã Islamismo)
sistema reprodutor para turmas do oitavo ano
HISTÓRIA DO BRASIL - anos de Democracia.pptx
Uma Introdução às Ciências do Alcorão (Islam)
disciplulado curso preparatorio para novos
ELEMENTOS E FUNÇÕES DE LINGUAGEM (EMOTIVA, REFERENCIAL, CONATIVA, POÉTICA, FÁ...
Slides Lição 7, CPAD, Uma Igreja Que Não Teme A Perseguição, 3Tr25.pptx
Aula 13 - Tópico Frasal - Argumentação.pptx
Organizador Curricular da Educação em Tempo Integral.pdf
Trabalho Cidades sustentáveis ou Utopia.pptx
MENDEL - Aula sobre Mendel - Genética EM
QuestõesENEMVESTIBULARPARAESTUDOSEAPRENDIZADO.pptx
Slide_Macronutrientes e Antinutrientes da Dieta Humana.pptx
COMO OS CONTOS DE FADAS REFLETEM ARQUÉTIPOS_MEDOS E DESEJOS DO INCONSCIENTE H...

Programação orientada a objetos em delphi

  • 1. Programação orientada a objetos em Delphi Abrindo sua mente para um mundo novo... mas nem tanto!
  • 2. 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
  • 3. 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
  • 4. 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.
  • 5. 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.
  • 6. 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.
  • 7. Entendendo como se faz Caelum
  • 8. Entendendo como se faz ● Classe: É a especificação, o projeto. ● Objeto: É a instancia, em memória, da classe. Este é o objeto de trabalho!
  • 9. Entendendo como se faz Unit UConta; Interface Uses SysUtils; Type TConta = Class public numero: integer; dono: String; saldo: real; limite: real; End; Implementation //...
  • 10. Entendendo como se faz Procedure 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;
  • 11. Entendendo como se faz ● Atributos: São características da classe. São variáveis que armazenam dados referente ao objeto.
  • 12. Entendendo como se faz Unit UConta; //... Type TConta = Class public numero: integer; dono: String; saldo: real; limite: real; public Procedure saca(valor: real); Procedure deposita(valor: real); End; Implementation //...
  • 13. 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; //...
  • 14. Entendendo como se faz Procedure 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;
  • 15. 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.
  • 16. 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.
  • 17. Entendendo como se faz Procedure 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;
  • 18. Entendendo como se faz Procedure 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;
  • 19. Entendendo como se faz ● Aproveite-se das referências de memória para otimizar seus métodos.
  • 20. Entendendo como se faz Unit 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 //...
  • 21. 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; //...
  • 22. Entendendo como se faz ● Pode-se deixar sua classe mais inteligente e robusta com a utilização de construtores e destruidores.
  • 23. Entendendo como se faz Unit 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 //...
  • 24. Entendendo como se faz //... Implementation Procedure TConta.Create; begin numero := 0; dono:= ''; saldo:= 0; limite: 1000; end; Procedure TConta.Free; begin // Tratamento de limpeza end; //...
  • 25. Entendendo como se faz ● Aproveite a estrutura e pense sempre de maneira modular. ● Cada classe deve ser especialista no que faz!
  • 26. 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;
  • 27. Entendendo como se faz Unit UTitular; Type TTitular = Class public nome: string; endereco: string; cpf: string; public Constructor Create; Destructor Free; End; Implementation //...
  • 28. Entendendo como se faz Unit 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 //...
  • 29. 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; //...
  • 30. Entendendo como se faz Procedure 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;
  • 31. Padrão de programação ● Pode-se adotar padrões de programação orientada a objetos para facilitar o trabalho em equipe.
  • 32. Padrão de programação Estrutura 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;
  • 33. Padrão de programação Unit UConta; Interface Uses 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); //...
  • 34. 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); //...
  • 35. 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 //...
  • 36. 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; //...
  • 37. 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; //...
  • 38. 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; //...
  • 39. 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.
  • 40. 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.
  • 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.