2 – Revisão de Programação Orientada a Objetos

Slides:



Advertisements
Apresentações semelhantes
Programação em Java Prof. Maurício Braga
Advertisements

Modificadores Marco Antonio. Introdução Em todas as linguagens de programação o acesso a classes/métodos deve seguir algumas regras.
Algoritmos e Estrutura de Dados I
Generalização, Especialização e Conceitos
Iniciação ao Java – Márcio F. Campos
Programação Básica em Java
Polimorfismo e Classes Abstratas Profa
Wagner Santos C. de Jesus
Classes e objetos P. O. O. Prof. Grace.
Paradigmas de Linguagens de Programação Paradima da Programação Orientada à Objetos Professor: Armando Hage Belém-2008.
CRIANDO OBJETOS EM JAVA
Revisão POO Profa. Cintia Carvalho Oliveira
Curso de extensão em Desenvolvimento Web
Introdução ao Teste Unitário com JUnit
Programação Orientada a Objetos com Java
Aula prática 13 Orientação a Objetos – C++ Parte 1
JAVA Orientação a Objetos
METODOLOGIA PARA DESENVOLVIMENTO DE SISTEMAS Prof. Dr. rer. nat. Daniel D. Abdala 1.
Programação I Aula 2 (Métodos)
Linguagem de Programação JAVA
Linguagens de Programação II Aula 04 – Entendendo Classes
if669 - Introdução à Programação
Professora Lucélia Oliveira
UTFPR – Campus Curitiba - DAELN Cursos de Eng. Eletrônica/Eng. da Computação IF62C - Fundamentos de Programação Semana 12 – Overloading X Overriding Prof.a.
PHP Orientado a Objetos Análise e Desenvolvimento de Sistemas Prof
Orientação a Objetos Parte I
Programação orientada a objectos em C++
Programação Orientada à Objetos
Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa Membro Static.
Programação Orientada a Objetos - Java
Prof. Silvestri – todos os direitos reservados SISTEMAS DISTRIBUIDOS Aula 5 Eduardo Silvestri
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS EM JAVA
Programação Orientada à Objetos
Wagner Santos C. de Jesus
Programação Orientada a Objetos - Java
Implementação Orientada a Objetos – Aula 03
PROGRAMAÇÃO ORIENTADA A OBJETOS
Programação Orientada a Objetos - Java Professor: Jean Carlo Mendes.
Programação Orientada à Objetos
Curso de Aprendizado Industrial Desenvolvedor WEB
Orientação a Objetos usando Java
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
Aula Prática 4 Monitoria IP/CC (~if669).
Prof.: Bruno Rafael de Oliveira Rodrigues. Construtor é bloco declarado que é chamado no momento em que o Objeto é criado (instanciado). Todas as classes.
Polimorfismo.
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
1 Marcio de Carvalho Victorino JAVA. 2 Declaração de Atributos [ ] [transient] [volatile] [static] [final] ; controle de acesso –public, package (default),
Programação I Aula 1 Prof. Gilberto Irajá Müller Última atualização 2/3/2009.
Herança e Arquitetura em camadas
Certificação Marco Antonio. Introdução A compreensão desse capítulo é muito importante pois trata de um assunto essencial em qualquer linguagem de programação,
Copyright 1998, Departamento de Informática da UFPE. Todos os direitos reservados sob a legislação em vigor. Variáveis e métodos estáticos, Passagem de.
Programação Orientada a Objetos - Java Professor: Jean Carlo Mendes.
Modificadores Programação II.
Aula Prática 13 Orientação a Objeto Monitoria
Conceitos de Orientação a Objetos zConceito de tipo zTipos Abstratos de Dados zMódulos/Pacotes zEncapsulamento.
Classes abstratas São classes das quais não se pode instanciar objetos. São classes das quais não se pode instanciar objetos. Seu objetivo é ser herdada.
2 – Revisão de Programação Orientada a Objetos
2 – Revisão de Programação Orientada a Objetos
Padrões de Projeto Aula 3 – Padrão Strategy.
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota
INSTITUTO FEDERAL DE EDUCAÇÃO, CIÊNCIA E TECNOLOGIA TOCANTINS Campus Araguaína Continuação Modelagem Orientada a Objetos Técnico Subsequente.
Implementação Orientada a Objetos – Aula 03 Atributos e Encapsulamento Prof. Danielle Martin/ Marcia Bissaco Universidade de Mogi das Cruzes
Implementação Orientada a Objetos – Aula 08 Herança, sobrescrita de métodos e polimorfismo Prof. Danielle Martin Universidade de Mogi das Cruzes
“Nature provides exceptions to every rule.“ - Margaret Fuller 3 – Exceções.
Padrões de Projeto 2 – Revisão de Programação Orientada a Objetos.
Padrões de Projeto 2 – Revisão de Programação Orientada a Objetos.
1. 2 Programação Orientada a Objetos II Prof. Maurício Rodrigues de Morais
Laboratório de Computação Aula 06 e 07 – Implementação de classes Prof. Fábio Dias
Introdução à Orientação a Objetos em Java Prof. Gustavo Wagner (Alterações) Slides originais: Prof. Tiago Massoni Desenvolvimento de Sistemas FATEC-PB.
Linguagem de Programação – Aula 04 Prof. Me. Ronnison Reges Vidal.
Transcrição da apresentação:

2 – Revisão de Programação Orientada a Objetos Padrões de Projeto 2 – Revisão de Programação Orientada a Objetos

Programação orientada a objetos Revisão rápida com análise acerca de algumas de suas implicações em Padrões de Projeto Padrões de Projeto - Revisão de POO Programação orientada a objetos

Parte 1 Classes e Objetos Encapsulamento Padrões de Projeto - Revisão de POO Parte 1

Roteiro Classes e objetos Encapsulamento Modificadores de acesso Composição, agregação e associação Padrões de Projeto - Revisão de POO

Classes e Objetos Padrões de Projeto - Revisão de POO

Classes e Objetos Padrões de Projeto - Revisão de POO

Classes e Objetos Praticando: como seria a classe de uma conta corrente? Padrões de Projeto - Revisão de POO

Classes e Objetos Dicas sobre comparação: ==  compara a referência equals  compara os atributos do objeto (se devidamente sobrescrito) Praticando: o que acontece na memória? Padrões de Projeto - Revisão de POO Ex.: olha a documentação de equals de Object em um site da internet (se não for sobrescrito ele compara por referência) http://docs.oracle.com/javase/7/docs/api/java/lang/Object.html#equals(java.lang.Object)

Classes e Objetos Praticando! (15 minutos) No Eclipse ou Notepad++, escreva uma classe ContaCorrente cujos atributos são saldo e cheque especial. Depois, escreva uma classe chamada Loja. Toda loja tem uma conta corrente. O que queremos simular com esse mini-projeto é uma Loja vendendo um produto a um cliente. Faremos isso no Main. Padrões de Projeto - Revisão de POO

Classes e Objetos Discutindo a solução Será que ainda nos lembramos o que significa encapsulamento? Volte ao exemplo anterior e verifique se o seu código utiliza este paradigma de OO. Como seria uma implementação com encapsulamento? Padrões de Projeto - Revisão de POO

Encapsulamento class ContaCorrente{ //Mau exemplo public int saldo; public int chequeEspecial; public ContaCorrente(int saldo, int chequeEspecial){ this.saldo = saldo; this.chequeEspecial = chequeEspecial; } class Loja{ public ContaCorrente minhaConta; public Loja(ContaCorrente minhaConta){ this.minhaConta = minhaConta; class Main{ public static void main(String [] args){ ContaCorrente c1 = new ContaCorrente(500, 100); // ... Padrões de Projeto - Revisão de POO

Encapsulamento O que poderia acontecer no exemplo anterior? As Lojas poderiam não ter tomado o cuidado suficiente ao manipular a variável saldo de seus clientes... Toda a responsabilidade fica sobre os programadores das Lojas que vão utilizar esta classe. A classe está desprotegida! Eventualmente alguma outra classe (programada por um desenvolvedor descuidado) poderia debitar de uma conta mais do que ela realmente teria em saldo... Padrões de Projeto - Revisão de POO

Encapsulamento O que é encapsulamento? Loja saldo cheque especial Conta Corrente Padrões de Projeto - Revisão de POO http://blog.caelum.com.br/revisitando-a-orientacao-a-objetos-encapsulamento-no-java/  outra explicação interessante debita(valor) credita(valor)

Encapsulamento Mas como conseguimos encapsulamento? Mantenha suas variáveis de instância protegida (modificador de acesso private) Crie métodos de acesso públicos (getters) Padrões de Projeto - Revisão de POO Com as variáveis private e os métodos públicos nós forçamos as classes que utilizam essas variáveis a as acessarem por meio desses métodos de acesso (os chamados getters).

Encapsulamento Modificadores de acesso: public private protected acesso global; private acesso restrito aos membros da classe; protected acesso permitido à todas as classes do mesmo pacote; acesso permitido a todas as sub-classes (herança); default ou package-private (sem modificador explícito) acesso permitido à todas as classes do mesmo pacote. Padrões de Projeto - Revisão de POO

Classes e Objetos Corrija o que você eventualmente fez errado na implementação do exercício anterior. Praticando! (15 minutos) No Eclipse ou Notepad++, escreva uma classe ContaCorrente cujos atributos são saldo e cheque especial. Lembre-se de encapsular estes atributos e permitir manipulação através dos métodos debita e credita, e acesso através dos getters. Depois, escreva uma classe chamada Loja. Toda loja tem uma conta corrente. Lembre-se de encapsular o atributo e permitir manipulação do conteúdo através do método vende, e acesso através dos getters. Padrões de Projeto - Revisão de POO

Classes e Objetos Corrija o que você eventualmente fez errado na implementação do exercício anterior. Para testar nosso mini-projeto, crie uma classe Main que instancie: um objeto cliente: saldo =100 e cheque especial = 100; Um objeto loja: que tem uma conta corrente com saldo = 1000 e cheque especial = 100. Roteiro de testes: Loja vende um produto que custa R$100. Loja vende um produto que custa R$150. Programa da loja mal implementado: Loja vende um produto que custa R$0. Loja vende um produto que custa R$-10. Padrões de Projeto - Revisão de POO

Encapsulamento //... mostrar código no Eclipse public class ContaCorrenteComEncapsulamento { private int saldo; private int chequeEspecial; public ContaCorrenteComEncapsulamento(int saldo, int chequeEspecial){ this.saldo = saldo; this.chequeEspecial = chequeEspecial; } public void debita(int valor) throws Exception{ if(valor <= 0) throw new Exception("Nao podemos debitar um valor negativo ou zero! Valor: "+valor); else if(valor > (saldo + chequeEspecial)) throw new Exception("Operacao negada! O cliente nao tem saldo suficiente! Saldo atual: "+(saldo + chequeEspecial)); else saldo -= valor; //... mostrar código no Eclipse Padrões de Projeto - Revisão de POO GoodAccounting http://blog.caelum.com.br/revisitando-a-orientacao-a-objetos-encapsulamento-no-java/  explicação legal

Encapsulamento Dica: Não é preciso gerar getters e setters de modo irrestrito para todo e qualquer atributo da classe. Para um getter e/ou um setter existir deve haver um motivo: encapsulamento. Algumas variáveis não precisam ser acessadas externamente; Algumas variáveis não devem ser modificadas diretamente através de um setter. PROTEGE os atributos de uma classe contra comportamentos estranhos, que poderiam ser causados por outras classes (em decorrência de programadores descuidados). FLEXIBILIDADE e FACILIDADE DE MANUTENÇÃO O código relativo a uma funcionalidade não fica espalhado pelo programa. Se futuramente precisarmos alterar essa funcionalidade, basta mudar o código do método que provê manipulação ou acesso desses atributos. Provê ABSTRAÇÃO Quando sabemos O QUÊ um método faz mas não sabemos exatamente COMO ele faz, dizemos que esse comportamento está encapsulado! Padrões de Projeto - Revisão de POO

Referências Essa aula utilizou alguns exemplos modificados das apostilas caelum além de alguns conceitos e exemplos abordados na apostilas para certificação java (SCJP e OCJP). Ahhh, alguns destes exemplos também saíram da minha cabeça.  Padrões de Projeto - Revisão de POO