Padrões de Projeto 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 Acoplamento Dinâmico
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.
Linguagem técnica de programação I Java – REVISÃO
CRIANDO OBJETOS EM JAVA
Revisão POO Profa. Cintia Carvalho Oliveira
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)
Métodos de Construção de Software: Orientação a Objetos
Linguagem de Programação JAVA
Classes, Objetos, Atributos e Métodos 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
Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa This.
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
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 - Java Professor: Jean Carlo Mendes.
Curso de Aprendizado Industrial Desenvolvedor WEB
UTFPR – Campus Curitiba - DAELN Cursos de Eng. Eletrônica/Eng
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.
1 Marcio de Carvalho Victorino JAVA. 2 Declaração de Atributos [ ] [transient] [volatile] [static] [final] ; controle de acesso –public, package (default),
Classes Abstratas e Interface
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.
Novidades... Quartetos; – Equilibrar Conhecimento; – Aprender a Ensinar; – Trabalho em Equipe; – Facilitar a Vida do Professor. – Então, definam seus grupos.
Prof. Marcos LABORATÓRIO DE PRÁTICA DE PROGRAMAÇÃO 06.
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
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
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
Aula 7 – Padrão Abstract Factory
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:

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

PARTE 1 1.Classes e Objetos 2.Encapsulamento 1.Modificadores de acesso 2 Revisão rápida com análise acerca de algumas de suas implicações em Padrões de Projeto

Classes e Objetos 3

4

Praticando: como seria a classe de uma conta corrente? 5

Classes e Objetos Praticando: o que acontece na memória? 6 Dicas sobre comparação: ==  compara a referência equals  compara os atributos do objeto (se devidamente sobrescrito)

Classes e Objetos Praticando! (15 minutos) – No seu caderno, escreva uma classe ContaCorrente cujos atributos são saldo e cheque especial. Métodos: creditar, debitar – Depois, escreva uma classe chamada Loja. Toda loja tem uma conta corrente. Método: vender – O que queremos simular com esse mini-projeto é uma Loja vendendo um produto a um cliente. Faremos isso no Main. (Isso fica pra depois ) 7

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? 8

Encapsulamento 9 class ContaCorrente{//Mau exemplo public int saldo; public int chequeEspecial; public ContaCorrente(int saldo, int chequeEspecial){ this.saldo = saldo; this.chequeEspecial = chequeEspecial; } //Métodos debitar e creditar } class Loja{ public ContaCorrente minhaConta; public Loja(ContaCorrente minhaConta){ this.minhaConta = minhaConta; } //Método vender } class Main{ public static void main(String [] args){ ContaCorrente c1 = new ContaCorrente(500, 100); //... }

Encapsulamento O que poderia acontecer no exemplo anterior? – As Lojas poderiam manipular a variável saldo de seus clientes de maneira direta... ao invés de usar creditar e debitar – 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... 10

Encapsulamento O que é encapsulamento? 11 saldo cheque especial Conta Corrente debita(valor) credita(valor) Loja

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) 12

Encapsulamento Modificadores de acesso: – public 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. 13

Classes e Objetos Corrija o que você eventualmente fez errado na implementação do exercício anterior. Praticando! (10 minutos) – 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 debitar e creditar, 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 apenas através do método vender, e acesso através dos getters. 14

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: 1.um objeto cliente: saldo =100 e cheque especial = 100; 2.Um objeto loja: que tem uma conta corrente com saldo = 1000 e cheque especial = 100. – Roteiro de testes: 1.Loja vende um produto que custa R$ Loja vende um produto que custa R$ Programa da loja mal implementado: 1.Loja vende um produto que custa R$0. 2.Loja vende um produto que custa R$

Encapsulamento 16 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 }

Encapsulamento 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! 17 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.

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. 18