INTERAÇÃO ENTRE OBJETOS Dilvan Moreira (baseado no livro Prog. Orientada a Objetos em Java)

Slides:



Advertisements
Apresentações semelhantes
TIPOS ABSTRATOS DE DADOS
Advertisements

Pearson Education Slide 1. Pearson Education Slide 2 Cap í tulo 10 Criado por Frederick H. Colclough, Colorado Technical University Ponteiros e Vetores.
Programação em Java Prof. Maurício Braga
Introdução a Programação Orientada a Objetos
Estruturas de Repetição
Paulo Marques Hernâni Pedroso
Métodos, Parâmetros, Argumentos e Contratos
Engenharia Informática Programação I & Estruturas de Dados e Algoritmos 2001/ Capitulo 3 – Introdução às classes Capitulo 3 Introdução às classes.
LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS MÉTODOS – UMA VISÃO MAIS APROFUNDADA Prof. Thiago Pereira Rique
Prof. Thiago Pereira Rique
Entendendo as definições de classe
Interação entre objetos
Algoritmos e Estrutura de Dados I
Conteúdo: - Modularização.
Orientação a Objetos: Encapsulamento e Classificação
Listas lineares Listas Lineares Fila Dupla Pilha Fila Saída restrita
Paradigmas da Programação – Semestre 1 – Aula 5
Integração entre objetos
Programação orientada a objetos com Java
Classes e objetos Arrays e Sobrecarga
Classes e objetos P. O. O. Prof. Grace.
Estrutura de Dados em Java
CRIANDO OBJETOS EM JAVA
Paradigmas de programação
Prof. Natalia Castro Fernandes Mestrado em Telecomunicações – UFF 2º semestre/2012.
Classes, Objetos e Encapsulamento
Programação Orientada a Objetos com Java
Aula prática 8 Ponteiros Monitoria de Introdução à Programação
JAVA Orientação a Objetos
Programação I Aula 2 (Métodos)
Entendendo as definições de classe
PROGRAMAÇÃO ESTRUTURADA (MODULARIZAÇÃO/SUBPROGRAMAÇÃO)
7 Arrays.
Introdução à Programação Orientada a Objetos com Java
Classes, Objetos, Atributos e Métodos JAVA
Curso de Aprendizado Industrial Desenvolvedor WEB Disciplina: Programação Orientada a Objetos I Professora: Cheli Mendes Costa This.
Capítulo III Modularização Procedimentos e Funções Universidade Federal de São Carlos Departamento de Computação Aluna: Luanna Lopes Lobato
Laboratório I Mateus Raeder. Mateus Raeder – fevereiro de 2009 Associação entre classes  Um objeto é a representação de uma entidade do mundo real 
Orientação a Objetos Parte II
Modularização Dividir um problema em subproblemas Módulos menores facilita a depuração Dividir o desenvolvimento entre vários programadores “Reutilização”
Programação Orientada a Objetos - Java
Universidade Católica de Angola Prática de laboratório Fundamentos de Programação II Frei Joaquim José Hangalo.
Prof. Gilberto Irajá Müller
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.
Orientação a Objetos e Java Graduação em Ciência da Computação  Centro de Informática, UFPE Alexandre Mota (com material da Qualiti Software Process)
Acabias Marques Luiz. I - Introdução ao Ruby Parte 1 – Introdução a linguagem  O que é Ruby  Instalação  O IRB  Operadores Aritméticos  Tipos de.
Programação I Aula 1 Prof. Gilberto Irajá Müller Última atualização 2/3/2009.
JAVA Sintaxe.
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,
Aula Prática 5 Monitoria IP/CC (~if669). Roteiro 1. 1.Recursão 2. 2.Escopo de Variáveis 3. 3.Arrays 4. 4.Strings.
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.
Paradigmas da Programação – Semestre 1 – Aula 8 Professor: Eduardo Mantovani )
CES-10 INTRODUÇÃO À COMPUTAÇÃO
Bruno Inojosa MCP .NET Framework
Orientação a Objetos Paradigma. Davi Pires Revisão Dúvidas da aula passada? –Características de Java –Compilador vs. Interpretador.
Conceitos de OO em Java Parte I
Implementação Orientada a Objetos – Aula 04 Métodos, parâmetros e retorno Prof. Danielle Martin/Marcia Bissaco Universidade de Mogi das Cruzes
USP – ICMC – SSC SSC0300 2º Semestre 2015 Disciplina de Linguagem de Programação e Aplicações [ Eng. Elétrica / Eletrônica ] 1 Prof. Dr. Daniel Rodrigo.
Módulo I Capítulo 7: Funções e Procedimentos William Ivanski Curso de Programação C#
Java Como Programar, 8/E Deitel/Deitel, 8e. Java – Como programar Copyright © 2010 Pearson Education Slide 1.
Alocação Dinâmica Dilvan Moreira. Objetivos  Entender o que são e como usar:  Gerenciamento de Memória  Alocação Dinâmica em C.
Herança em Java Curso: Informática Disciplina: Programação Orientada a Objetos Prof. Abrahão Lopes
HERANÇA Dilvan Moreira (baseado no livro Prog. Orientada a Objetos em Java)
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.
AGRUPANDO OBJETOS Dilvan Moreira (baseado no livro Prog. Orientada a Objetos em Java)
PROGRAMANDO EM TypeScript
Transcrição da apresentação:

INTERAÇÃO ENTRE OBJETOS Dilvan Moreira (baseado no livro Prog. Orientada a Objetos em Java)

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 2 Lembrando: Estrutura de classe básica public class TicketMachine { A parte interna da classe omitida. } classe pública NomeDaClasse { Campos Construtores Métodos } O invólucro externo de TicketMachine O conteúdo de uma classe

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 3 Lembrando: Métodos de acesso lista de parâmetro (vazia) public int getPrice() { return price; } tipo de retorno nome do método início e fim do corpo do método (bloco) instrução de retorno modificador de visibilidade

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 4 Lembrando: Métodos modificadores public void insertMoney(int amount) { balance = balance + amount; } tipo de retorno nome do método parâmetro modificador de visibilidade instrução de atribuição campo sendo modificado

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 5 Lembrando: Variáveis locais public int refundBalance() { int amountToRefund; amountToRefund = balance; balance = 0; return amountToRefund; } Uma variável local Nenhum Modificador de visibilidade

Leitura  Capítulo 3 (Prog. Orient. a Obj. usando Java - 4th Edition)

Importância da interação entre objetos  As aplicações precisam da combinação de objetos de forma a cooperar para realizar uma tarefa comum.

Abstração e modularização  Problemas complexos devem ser divididos e abordados como subproblemas  Abstração: é a capacidade de ignorar detalhes de partes para focalizar a atenção em um nível mais elevado de um problema  Modularização: é o processo de dividir um todo em partes bem-definidas, que podem ser construídas e examinadas separadamente e que interagem de maneiras bem- definidas.

Modularização: Relógio digital  Exibir horas e minutos separados por dois-pontos.  O mostrador exibe a hora de 00:00 a 23:59

Modularização: Relógio digital Um mostrador de quatro dígitos? Ou mostradores de dois dígitos?

Modularização: Relógio digital Mostrador de quatro dígitos Mostrador de dois dígitos para hora e outro para minutos Mostrador de dois dígitos com limite. No caso das horas, o limite é entre “0” até “23”. No caso dos minutos, o limite é entre “0” até “59” Nível de Abstração maior

Modularização: Relógio digital 1.Podemos criar a classe “NumberDisplay” que seria o mostrador de dois dígitos. 2.Essa classe pode ser utilizada tanto para hora quanto para minutos Mostrador de dois dígitos com limite. No caso das horas, o limite é entre “0” até “23”. No caso dos minutos, o limite é entre “0” até “59” Mostrador com maior nível de abstração.

Modularização: Relógio digital  Implementação - NumberDisplay public class NumberDisplay { private int limit; private int value; Construtores e métodos omitidos. }

Modularização: Relógio digital  Implementação – ClockDisplay  A classe “ClockDisplay” é nosso relógio.  Está composto por dois objetos da classe “NumberDisplay”. Um deles para mostrar a hora e outro para mostrar os minutos. public class ClockDisplay { private NumberDisplay hours; private NumberDisplay minutes; Construtores e métodos omitidos. }

Tipo de objeto versus tipo primitivo  A classe “ClockDisplay” armazena dois objetos de tipo “NumberDisplay”.  Assim, existe um relacionamento entre a classe “ClockDisplay” e “NumberDisplay”  A classe “NumberDisplay” define um tipo. public class ClockDisplay { private NumberDisplay hours; private NumberDisplay minutes; Construtores e métodos omitidos. }

Diagrama de Objetos  Mostra os objetos e seus relacionamentos em um momento no tempo durante a execução de uma aplicação.  Fornece as informações sobre objetos em tempo de execução.  Apresenta a visualização dinâmica de um programa.

Diagrama de Objetos

Diagrama de Classes  Mostra as classes de uma aplicação e os relacionamentos entre elas.  Fornece as informações sobre o código-fonte e apresenta a visualização estática de um programa.

Diagrama de Classes

Tipo de objeto versus tipo primitivo  Tipos de objeto versus tipos primitivos 32 tipo de objeto tipo primitivo NumberDisplay obj; int i;

Programãção orientada com objetos JAVA – Uma introdução prática utilizando o BlueJ Barnes|Kölling © 2008 by Pearson Education slide 21 Questionário: qual é o resultado?  int a; int b; a = 32; b = a; a = a + 1; System.out.println(b);  Person a; Person b; a = new Person("Everett"); b = a; a.changeName("Delmar"); System.out.println( b.getName());

Referência de Objeto  O diagrama de objeto mostra a referência de objeto.  Assim, uma variável de tipo primitivo é mostrada como uma caixa branca e a referência de objeto é mostrada com uma seta. 32 int a; 32 ObjectType a; ObjectType b; int b; b = a;

Referência de Objeto  As variáveis de tipos de objeto armazenam referências de objetos.  Em outras palavras, quando uma variável armazena um objeto, o objeto não é armazenado na variável diretamente.  Em vez disso, uma referência de objeto é armazenada na variável.

Código-fonte: NumberDisplay public NumberDisplay(int rollOverLimit) { limit = rollOverLimit; value = 0; } public void increment() { value = (value + 1) % limit; }

O operador de módulo  O operador de 'divisão' (/), quando aplicado ao operando int, retorna o resultado de uma divisão de inteiro.  O operador de 'módulo' (%) retorna o resto de uma divisão de inteiro.  Por exemplo, em geral: 17 / 5 = resulta em 3, restando 2  Em Java: 17 / 5 = 3 17 % 5 = 2

Código-fonte: NumberDisplay public String getDisplayValue() { if(value < 10) { return "0" + value; } else { return "" + value; }

Objetos que criam objetos public class ClockDisplay { private NumberDisplay hours; private NumberDisplay minutes; private String displayString; public ClockDisplay() { hours = new NumberDisplay(24); minutes = new NumberDisplay(60); updateDisplay(); }

Diagrama de objeto ClockDisplay

null  null é um valor especial em Java.  Todas as variáveis de objeto são inicializadas como null.  Você pode atribuir e testar a existência de null : private NumberDisplay hours; if(hours == null) {... } hours = null;

Objetos que criam objetos hours = new NumberDisplay(24); public NumberDisplay(int rollOverLimit); na classe ClockDisplay: na classe NumberDisplay: parâmetro formal parâmetro real

Chamadas de método externo  A instrução “minutes.increment()” chama o método increment do objeto minutes. public void timeTick() { minutes.increment(); if(minutes.getValue() == 0) { // ele acabou de retornar! hours.increment(); } updateDisplay(); }

Chamadas de método externo  Uma chamada de método para um método de outro objeto é referida como uma chamada de método externo.  A sintaxe de uma chamada de método externo é:  objeto. nomeDoMétodo ( lista de parâmetros )  Essa sintaxe é conhecida como notação de ponto.

Método interno  Métodos da mesma classe: /** * Atualiza a string interna que representa o mostrador. */ private void updateDisplay() { displayString = hours.getDisplayValue() + ":" + minutes.getDisplayValue(); } public ClockDisplay() {... updateDisplay(); }

Método interno  Os métodos podem chamar outros métodos da mesma classe como parte de sua implementação.  Esse processo é denominado chamada de método interno.

Chamadas de método (1)  chamadas de método interno: updateDisplay();... private void updateDisplay()  chamadas de método externo: minutes.increment();

Chamadas de método (2) object. nomeDoMétodo( lista-de-parâmetros )

A palavra-chave this  O construtor da classe “NumberDisplay” pode ser escrito utilizando a palavra-chave this. public NumberDisplay(int rollOverLimit) { limit = rollOverLimit; value = 0; }

A palavra-chave this public NumberDisplay(int limit) { this.limit = limit; this.value = 0; }

A palavra-chave this  Por exemplo, a linha “this.limit = limit;” é uma instrução de atribuição.  Ela atribui o valor do lado direito (limit) à variável à esquerda (this.limit).

A palavra-chave this  A razão para utilizar essa construção é que temos uma situação que é conhecida como sobrecarga de nome (name overloading).  O mesmo nome é utilizado para duas entidades diferentes.  A expressão this referencia o objeto atual. Escrever this.limit referencia o campo limit no objeto atual.

Depurador (debugger)  ‘O primeiro bug de computador’ foi um inseto de verdade, uma mariposa, que foi encontrada no interior do computador Mark II por Grace Murray Hopper, uma pioneira na computação em 1945.

Depurador (debugger)  No National Museum of American History do Smithsonian Institute mostra um registro com essa maripossa colada no livro e a observação “primeiro caso real de descoberta de um bug”.

Depurador (debugger)  Depurador: é uma ferramenta de software que ajuda a examinar como uma aplicação é executada.  Bugs: Erros em programas de computador.  O depurador pode ser utilizado para localizar bugs.  Ele permite que os programadores executem uma aplicação em um passo por vez.

Perguntas?