Programação Orientada a Objetos Herança Técnico em Informática. Prof. Marcos André Pisching, M.Sc.



Documentos relacionados
Programação Orientada a Objetos. Prof. Diemesleno Souza Carvalho diemesleno@iftm.edu.br

ATRIBUTOS PRIVADOS 6. ENCAPSULAMENTO MÉTODOS PRIVADOS MÉTODOS PRIVADOS

Programação Orientada a Objetos Classes Abstratas Técnico em Informática. Prof. Marcos André Pisching, M.Sc.

Orientação a Objetos

Orientação a Objetos

ATRIBUTOS E MÉTODOS DE CLASSE

PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

Análise e Projeto de Sistemas

PROGRAMANDO EM C# ORIENTADO A OBJETOS

Especificação do 3º Trabalho

Java 2 Standard Edition Como criar classes e objetos

Polimorfismo. Prof. Leonardo Barreto Campos 1

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

Orientação a Objetos

Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP

2 Diagrama de Caso de Uso

UML Aspectos de projetos em Diagramas de classes

Disciplina Técnicas de Modelagem

Programação Orientada a Objetos (DPADF 0063)

Análise e Projeto Orientado a Objetos

Engenharia de Software III

3.1 Definições Uma classe é a descrição de um tipo de objeto.

ARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo.

COMO MINIMIZAR AS DÍVIDAS DE UM IMÓVEL ARREMATADO

Diagrama de Classes. Um diagrama de classes descreve a visão estática do sistema em termos de classes e relacionamentos entre as classes.

Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 03 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO)

Introdução a Java. Hélder Nunes

Herança. Algoritmos e Programação II. Aula 5 Herança

Decorator Pattern. SISMO - Sistemas e Mobilidade Junho de Departamento de Informática / UFMA

A nova funcionalidade tem a finalidade de gerenciar o Plano de Cuidados de cada

Modelagemde Software Orientadaa Objetos com UML

NOVIDADES DO JAVA PARA PROGRAMADORES C

Roteiro do Programa e Entrada/Saída

Sistemas Operacionais

ENGENHARIA DA COMPUTAÇÃO CONTEÚDO 4 GENERALIZAÇÃO E ENTIDADE ASSOCIATIVA. Prof. Msc. Ricardo Antonello BANCO DE DADOS I

Modelo conceitual Aula 08

Herança. Alberto Costa Neto DComp - UFS

Técnicas de Programação II

Capítulo 14. Herança a e Polimorfismo. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Orientação a Objetos e a Linguagem Java

Reuso com Herança a e Composiçã

Factory Method. Edeyson Andrade Gomes

Capítulo 11. Conceitos de Orientação a Objetos. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Programação com Objectos. Processamento de Dados I. 4. Classes Abstractas

Guia de utilização da notação BPMN

UFG - Instituto de Informática

Integração ADMRH com AGROSYS

RESOLUÇÃO DAS QUESTÕES DE MATEMÁTICA

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

Programação de Computadores - I. Profª Beatriz Profº Israel

Programação Orientada a Objetos: Lista de exercícios #1. Bruno Góis Mateus

UML & Padrões Aula 3. UML e Padrões - Profª Kelly Christine C. Silva

QUESTÃO 2: A respeito do diagrama de caso de uso apresentado, assinale a alternativa correta.

DEFINIÇÃO DE MÉTODOS

Sumário. Uma visão mais clara da UML

Análise e Projeto Orientado a Objetos. Modelagem de Domínio

A apresentação através de fluxos lógicos consegue mostrar mal entendidos e pontos que são controversos.

Questões de Concursos Públicos sobre Orientação a Objetos e UML

Programação por Objectos. Java

Relacionamentos entre classes

ISO/IEC 12207: Gerência de Configuração

Estudo de Viabilidade. GMon Sistema de Gerenciamento de Monitores. Curso: Ciências da Computação Professora: Carla Silva

Os juros podem ser capitalizados segundo dois regimes: simples ou compostos.

Tabela e Gráficos Dinâmicos Como estruturar dinamicamente dados no Excel

Esta dissertação apresentou duas abordagens para integração entre a linguagem Lua e o Common Language Runtime. O objetivo principal da integração foi

A Matemática e o dinheiro

Memória Cache. Prof. Leonardo Barreto Campos 1

Curso de PHP. FATEC - Jundiaí. A programação orientada a objetos (object-oriented oriented programming

ENGENHARIA DA COMPUTAÇÃO

Capítulo 2. Processos de Software Pearson Prentice Hall. Todos os direitos reservados. slide 1

CURSO DE TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS

O comando switch. c Professores de ALPRO I 04/2012. Faculdade de Informática PUCRS. ALPRO I (FACIN) O comando switch 04/ / 31

Banco de Dados I. Projeto de Banco de Dados e o Modelo E-R Parte 2. Fabricio Breve

Análise e Resolução da prova de Auditor Fiscal da Fazenda Estadual do Piauí Disciplina: Matemática Financeira Professor: Custódio Nascimento

Modelos de Sistema by Pearson Education. Ian Sommerville 2006 Engenharia de Software, 8ª. edição. Capítulo 8 Slide 1.

2 Engenharia de Software

Feature-Driven Development

Matemática Financeira

Exercícios Práticos Assunto: Criação de slots e instâncias da ontologia com o Protegé.

UNIVERSIDADE FEDERAL DO PARANÁ UFPR Bacharelado em Ciência da Computação

Manual do Teclado de Satisfação Online WebOpinião

Cálculo de Juros Simples e Composto no Excel - Parte 1

Orientação a Objeto e UML Questões 2014 Prof. Felipe Leite

Análise e Projeto Orientados por Objetos

Conceitos Importantes:

PROGRAMAÇÃO ORIENTADA A OBJETO EM PHP

Prototype, um Design Patterns de Criação

AULA 4 VISÃO BÁSICA DE CLASSES EM PHP

Introdução! 1. Modelos de Domínio! 1. Identificação de classes conceituais! 2. Estratégia para identificar classes conceituais! 2

Programação Orientada a Objetos em Java

Guia do uso consciente do crédito. O crédito está aí para melhorar sua vida, é só se planejar que ele não vai faltar.

Modelagem de Sistemas

MRP II. Planejamento e Controle da Produção 3 professor Muris Lage Junior

Laboratório de ENGSOF Estudo de Caso. Prof. André Pereira, MSC, PMP

Prova de Java. 1) Copie o programa abaixo no eclipse e complete-o, utilizando os conceitos aprendidos durante o curso. (4 pontos)

Conectar diferentes pesquisas na internet por um menu

MATEMÁTICA FINANCEIRA

Processos Prof. João Paulo de Brito Gonçalves

Transcrição:

Herança Técnico em Informática, M.Sc.

Herança 2

Herança Reutilização de código Exemplo Banco: Um banco oferece diversos serviços que podem ser contratados individualmente pelos clientes. Quando um serviço é contratado, o sistema do banco deve registrar quem foi o cliente que contratou o serviço, quem foi o funcionário responsável pelo atendimento ao cliente e a data de contratação. 3

Herança DRY Don t repeat yourself Motivação: Aumento da produtividade e a diminuição do custo de manutenção. A ideia é reaproveitar o máximo do código já criado. devemos minimizar ao máximo a utilização do copiar e colar. 4

Herança Uma classe para todos os serviços prestados pelo banco: Poderia ser utilizada uma única classe para modelar todos os tipos de serviço que o banco oferece. 5

Herança Serviço de Empréstimo: Quando um cliente contrata esse serviço, são definidos o valor e a taxa de juros mensal do empréstimo. Devemos acrescentar duas propriedades na classe Servico: uma para o valor e outra para a taxa de juros do serviço de empréstimo. 6

Herança Serviço de Seguro de Veículo: Para esse serviço devem ser definidas as seguintes informações: veículo segurado, valor do seguro e a franquia. Devemos adicionar três atributos na classe Servico. 7

Herança Observações: Apesar de seguir a ideia do DRY, modelar todos os serviços com apenas uma classe pode dificultar o desenvolvimento. Supondo que dois ou mais desenvolvedores são responsáveis pela implementação dos serviços, eles provavelmente modificariam a mesma classe concorrentemente. Além disso, os desenvolvedores, principalmente os recém chegados no projeto do banco, ficariam confusos com o código extenso da classe Servico. Outro problema é que um objeto da classe Servico possui atributos para todos os serviços que o banco oferece. Na verdade, ele deveria possuir apenas os atributos relacionados a um serviço. Do ponto de vista de performance, essa abordagem causaria um consumo desnecessário de memória 8

Herança Uma Classe para cada Serviço: evitando uma quantidade grande de atributos e métodos desnecessários, cria-se uma classe para cada serviço. Classe SeguroDeVeiculo 9

Herança Uma Classe para cada Serviço: Classe Emprestimo 10

Herança Observações: Criar uma classe para cada serviço torna o sistema mais flexível, pois qualquer alteração em um determinado serviço não causará efeitos colaterais nos outros. Por outro lado, essas classes teriam bastante código repetido, contrariando a ideia do DRY. Além disso, qualquer alteração que deva ser realizada em todos os serviços precisa ser implementada em cada uma das classes. 11

Herança classe genérica e classes especializadas

Classe Genérica e Classes Especializadas Na modelagem dos serviços do banco, podemos aplicar um conceito de orientação a objetos chamado Herança. A ideia é reutilizar o código de uma determinada classe em outras classes. Aplicando herança, tem-se a classe Servico com os atributos e métodos que todos os serviços devem ter e uma classe para cada serviço com os atributos e métodos específicos do determinado serviço. 13

Classe Genérica e Classes Especializadas As classes especializadas (específicas ) seriam ligadas de alguma forma à classe Servico para reaproveitar o código nela definido. Esse relacionamento entre as classes é representado em UML pelo diagrama apresentado no próximo slide. 14

Classe Genérica e Classes Especializadas Classe genérica Classes especializadas Hierarquia de classe de serviços Demonstrar a API Java 15

Herança Implementação em Java

Herança - implementação Inicialmente é necessário definir a classe genérica: Esta deve conter atributos e métodos comuns as classes especializadas. Logo, implementa-se as classes especializadas (específicas). 17

Herança - implementação Implementação da classe genérica Servico 18

Herança - implementação Implementação da classe especializada SeguroDeVeiculo: SeguroDeVeiculo é um tipo de Servico SeguroDeVeiculo tem Veiculo 19

Herança - implementação Implementação da classe especializada Emprestimo: Emprestimo é um tipo de Servico 20

Herança - implementação A classe genérica é denominada super classe, classe base ou classe mãe. As classes específicas são denominadas sub classes, classes derivadas ou classes filhas. Quando o operador new é aplicado em uma sub classe, o objeto construído possuirá os atributos e métodos definidos na sub classe e na super classe. 21

Herança - implementação Criação de um objeto a partir da sub classe. 22

Herança - implementação Determinando um valor fixo para taxa de serviço: Supondo que todo serviço do banco possui uma taxa administrativa que deve ser paga pelo cliente que contratar o serviço. Inicialmente, considere que o valor dessa taxa é igual para todos os serviços do banco. poderíamos implementar um método na classe Servico para calcular o valor da taxa. Este método será reaproveitado por todas as classes que herdam da classe Servico. 23

Herança - implementação Determinando um valor fixo para taxa de serviço: 24

Herança - implementação Acessando o método a partir das subclasses Emprestimo e SeguroDeVeiculo 25

Reescrita de Método Subscrição - Overriding

Reescrita de Método... usando o exemplo do banco: Suponha que o valor da taxa administrativa do serviço de empréstimo é diferente dos outros serviços, pois ele é calculado a partir do valor emprestado ao cliente. Como esta lógica é específica para o serviço de empréstimo, devemos acrescentar um método para implementar esse cálculo na classe Emprestimo. 27

Reescrita de Método... a implementação 28

Reescrita de Método... acessando o método 29

Reescrita de Método... problema!!! Para os objetos da classe Emprestimo, devemos chamar o método calculartaxadeemprestimo(). Para todos os outros serviços, devemos chamar o método calculartaxa(). Observação: Mesmo assim, nada impediria que o método calculartaxa() fosse chamado em um objeto da classe Emprestimo, pois ela herda esse método da classe Servico. Dessa forma, existe o risco de alguém erroneamente chamar o método incorreto 30

Reescrita de Método... tornando a classe Emprestimo mais segura!!! Seria mais seguro substituir a implementação do método calculartaxa() herdado da classe Servico na classe Emprestimo. 31

Reescrita de Método... a implementação da classe Emprestimo: override Os métodos das classes específicas têm prioridade sobre os métodos das classes genéricas. Em outras palavras, se o método chamado existe na classe filha ele será chamado, caso contrário o método será procurado na classe mãe. Quando definimos um método com a mesma assinatura na classe base e em alguma classe derivada, estamos aplicando o conceito de Reescrita de Método. 32

Usando uma implementação da superclasse para complementar uma implementação na subclasse. Reescrita de Método Fixo + Específico Suponha que o preço de um serviço é a soma de um valor fixo mais um valor que depende do tipo do serviço. Por exemplo, o preço do serviço de empréstimo é 5 reais mais uma porcentagem do valor emprestado ao cliente. O preço do serviço de seguro de veículo é 5 reais mais uma porcentagem do valor do veículo segurado. Em cada classe específica, podemos reescrever o método calculataxa(). 33

Reescrita de Método Fixo + Específico Usando uma implementação da superclasse para complementar uma implementação na subclasse.. O preço do serviço de seguro de veículo é 5 reais mais uma porcentagem do valor do veículo segurado. Em cada classe específica, podemos reescrever o método calculataxa(). 34

Reescrita de Método Fixo + Específico... mudando a implementação: Tornando o valor de 5,00 fixo para todos os serviços Se o valor fixo dos serviços for atualizado, todas as classes específicas devem ser modificadas. Outra alternativa seria criar um método na classe Servico para calcular o valor fixo de todos os serviços e chamá-lo a partir dos métodos reescritos nas classes específicas. 35

Reescrita de Método Fixo + Específico... mudando a implementação: O método subscrito CalcularTaxa da classe Emprestimo chama o método CalcularTaxa da classe Servico. Usa-se a palavra reservada super. 36

Reescrita de Método Fixo + Específico... mudando a implementação: Da mesma forma, usa-se a classe super (Servico) para complementar a implementação do método CalcularTaxa da classe SeguroDeVeiculo Dessa forma, quando o valor padrão do preço dos serviços é alterado, basta modificar o método na classe Servico. 37

Construtores e Herança

Construtores e Herança Quando temos uma hierarquia de classes, as chamadas dos construtores são mais complexas do que o normal. Pelo menos um construtor de cada classe de uma mesma sequência hierárquica deve ser chamado ao instanciar um objeto. Por exemplo: quando um objeto da classe Emprestimo é criado, pelo menos um construtor da própria classe Emprestimo e um da classe Servico devem ser executados. Além disso, os construtores das classes mais genéricas são chamados antes dos construtores das classes específicas. 39

Construtores e Herança - Exemplo 40

Construtores e Herança - Exemplo 41

Referências Bibliográficas www.k19.com.br (o conteúdo deste material é baseado na apostila Java e Orientação a Objetos, de propriedade da K19 Treinamentos) Agradecimento: Agradeço a K19 pela disponibilização da excelente apostila sobre Java e Orientação a Objetos. 42