Sobrecarga. Algoritmos e Programação II. Aula 3 Sobrecarga

Documentos relacionados
Algoritmos e Programação II. Sobrecarga

Atributos e Métodos de Classe

Algoritmos e Programação 2. Objetos e Classes em Java. Classes. Revisão. Definições de classes incluem (geralmente):

Linguagem de Programação III

Aula 5 POO 1 Encapsulamento. Profa. Elaine Faria UFU

Programação com Objectos. Processamento de Dados I. 2. Classes, Atributos e Métodos

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan Prof a. Rachel Reis

Linguagem de Programação II Implementação

Linguagem de Programação Orientada a Objeto Construtores e Sobrecarga

Conceitos Básicos da Programação OO

RESULUÇÃO DOS EXERCÍCIOS E INSTRUÇÕES DE DECISÃO (if{} e else{}) Profº André Aparecido da Silva Disponível em:

Orientação a Objetos e Java

Aula 03 Introdução à Java. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes

Classes, instâncias e métodos de acesso. prática

Linguagem de Programação III

CONCEITOS BÁSICOS DE ORIENTAÇÃO A OBJETOS PROF. ME. HÉLIO ESPERIDIÃO

COMPORTAMENTOS - Observações

5 Arrays. 5.1 Criando um array. 5.2 Inicializando arrays. c:\>java Array Janeiro tem 31 dias.

Laboratório de programação II

Análise de Programação

Interfaces. Universidade Católica de Pernambuco Ciência da Computação. Prof. Márcio Bueno.

Programação Orientada a Objetos

Programação Java (nível intermediário) 4. Polimorfismo

Aula 6 POO 1 Construtores. Profa. Elaine Faria UFU

Classes e Objetos em Java. Algoritmos e Programação I. Classes. Classes. Modificadores de Acesso. Classes. Revisão

Fundamentos Básicos da linguagem Java (Programação Orientada a Objetos) Prof. Responsáveis Wagner Santos C. de Jesus

Linguagem de programação Java

Classes o Objetos. Classes, objetos, métodos e variáveis de instância

POO fundamentos Parte II. Professor Vicente Paulo de Camargo

final class UltimosDiasMeses{ static final int[] DIAS_DO_MES = {31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31}; }

Programação Orientada a Objetos. Aula 1.9 this e static. Prof. Bruno Moreno

Curso: Técnico em Informática Integrado Disciplina: POO Carga horária: 60h Período: 2º Ano Professor: Edmilson Barbalho Campos Neto LISTA 02.

Programação Java. - Herança e Polimorfismo - Marco Fagundes Marco Fagundes -

Programação Orientada a Objetos Aula I Declaração de classes, métodos construtores. Prof.: Bruno E. G. Gomes IFRN

1 Introdução e Conceitos básicos

Paradigmas de Programação. Java First-Tier: Aplicações. Orientação a Objetos em Java (I) Nomenclatura. Paradigma OO. Nomenclatura

Programação Orientada a Objetos

Classes e Objetos INTRODUÇÃO À ORIENTAÇÃO A OBJETOS COM JAVA - MÓDULO II. Classes. Objetos. Um modelo para a criação de objetos

Programação Orientada a Objetos

PROGRAMAÇÃO ORIENTADA A OBJETOS JAVA

Classes e Objetos. Sintaxe de classe em Java

Implementando classes em C# Curso Técnico Integrado em Informática Fundamentos de Programação

POO29004 Programação Orientada a Objetos

Programação. Orientada a Objetos: Herança. Objetos. Relacionamento entre classes. Análise e Projeto Orientados a. Objetos

Aula 7 Modularização. Processamento da Informação. Universidade Federal do ABC

Arrays em Java. Introdução à Programação. Bruno Cartaxo

Vetores Unimensionais

Algoritmos II prof. Daniel Oliveira

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Programação Java. Marco Fagundes. - Herança, Classes Abstratas e Interfaces Marco Fagundes -

Sabemos que a classe é responsável por definir a estrutura e o comportamento de seus objetos. Portanto, os objetos são instâncias das classes.

UNIP - Ciência da Computação e Sistemas de Informação. Estrutura de Dados. AULA 5 Pilhas

Lista 05 Herança. public class PessoaFisica extends Pessoa { private String RG; public PessoaFisica(){ super(); } public String getrg(){ return RG; }

Para entender o conceito de objetos em programação devemos fazer uma analogia com o mundo real:

Técnicas de Programação:

Programação Orientada a Objectos - P. Prata, P. Fazendeiro

Programação Orientada a Objetos. Métodos e Atributos. Métodos. Métodos. Alexandre César Muniz de Oliveira. Parte III

Orientação a objetos. Programação. Orientada a Objetos. Orientação a objetos. Orientação a objetos. Abstração e encapsulamento

Construtores. Introdução

Exercícios sobre repetição. 1. Escreva um método que lê via teclado 8 números e retorna a quantidade de negativos.

Programação Orientada a Objetos. Professor: André Luis Meneses Silva br.geocities.com/programacao2ufs

Linguagem de Programação II Implementação

Esta categoria mais geral, à qual cada objeto pertence, denominamos de classe; IFSC/POO + JAVA - prof. Herval Daminelli

9 Classes Abstractas e Interfaces

Java e sua Sintaxe. Estrutura mínima de um programa em Java: public class Exemplo { }

Programação Orientada a Objetos. Vagner Luz do Carmo - Vluzrmos

Atributos e Métodos Estáticos

AULA 6 - ARRAYS. Array de 10 elementos

Programação Orientada a Objetos com Java. Prof. Júlio Machado

Encapsulamento e Métodos (Construtores e Estáticos) João Paulo Q. dos Santos

DIRETORIA ACADÊMICA DE GESTÃO E TECNOLOGIA DA INFORMAÇÃO DIATINF TECNOLOGIA EM ANÁLISE E DESENVOLVIMENTO DE SISTEMAS TADS

Introdução a classes e objetos. Prof. Marcelo Roberto Zorzan

Programação em Linguagem C++

Programação Orientada a Objetos. Encapsulamento

CIÊNCIA DA COMPUTAÇÃO - LINGUAGEM DE PROGRAMAÇÃO II REVISÃO POO

3. Para a classe Circulo abaixo, escreva os métodos indicados pelos dois primeiros comentários.

Ex: carro_desportivo poderá ser uma subclasse de automóvel (carro_desportivo é_um automóvel)

AULA 02 DADOS PRIMITIVOS E EXERCÍCIOS

Programação Orientada a Objetos em Java

Transcrição:

Algoritmos e Programação II Aula 3 Sobrecarga *Adaptado do material do Prof. Júlio Machado Sobrecarga Em várias linguagens é comum encontrarmos rotinas que fazem basicamente a mesma coisa, porém, com nomes distintos porque se diferenciam nos tipos dos parâmetros. Ex.: classe Acumulador Dois métodos adicionadouble e adicionaint. Ambos somam o valor recebido como parâmetro ao atributo de instância. public class Acumulador { private double valor; public Acumulador() { valor = 0; public double getvalor() { return(valor); public void adicionadouble(double n) { valor = valor + n; public void adicionaint(int n) { valor = valor + n; 1

Em Java, podemos criar os dois métodos com o mesmo nome! A condição é que tenham uma lista de parâmetros diferentes. public class Acumulador { public void adiciona(double n) { valor = valor + n; public void adiciona(int n) { valor = valor + n; 2

Chama-se de sobrecarga de métodos (overloading) o ato de criar diversos métodos com o mesmo nome que se diferenciam pela lista de argumentos (parâmetros). Métodos são identificados pela sua assinatura: nome do método + lista de parâmetros. Métodos com mesmo nome, mas com tipo, quantidade ou ordenação de parâmetros diferentes, são considerados métodos diferentes. Cuidado!!! Esses métodos possuem uma definição correta para sobrecarga? public void soma(int n, double d) public void soma(double d, int n) public void soma(int n) public void soma(int v) public void soma(int n) public double soma(int n)??? Na API de Java, diversas classes utilizam a sobrecarga de métodos, por exemplo: Classe String valueof (boolean b) valueof (char c) valueof (double d) valueof (float f) valueof (int i) valueof (long l) retorna a representação em String do argumento recebido. 3

Classe Vector add(int indice, Object elemento) insere o elemento na posição indicada do vetor add(object elemento) insere o elemento no final do vetor remove(int indice) remove o elemento da posição indicada do vetor remove(object elemento) busca e remove a primeira ocorrência do elemento encontrada no vetor Sobrecarga de Construtores Usualmente é útil para uma classe possuir mais de um construtor a fim de oferecer diversas maneiras para instanciar e inicializar os objetos dessa classe. Um construtor também pode sofrer o processo de sobrecarga. Exemplo: classe Circulo Deseja-se ter a capacidade de inicializar os atributos de um novo objeto de duas formas: através de um construtor sem parâmetros, que cria um círculo padrão de centro (0,0) e raio 1, e através de um construtor que recebe as informações de centro e raio para criar o círculo 4

public class Circulo { private int centrox; private int centroy; private int raio; public Circulo(int x, int y, int r){ if (x >= 0) centrox = x; else centrox = 0; if (y >= 0) centroy = y; else centroy = 0; if (r > 0) raio = r; else raio = 1; public Circulo() { centrox = 0; centroy = 0; raio = 1; Testando a classe: public class TesteCirculo { public static void main (String args[]) { Circulo circ1 = new Circulo(); Circulo circ2 = new Circulo(1,2,4); System.out.println("Area circ1= " + circ1.area()); System.out.println("Area circ2= " + circ2.area()); Estudo de Caso Classe Professor Definir construtores para: Inicializar um professor informando um nome, número de matrícula e carga horária; Inicializar um professor informando o nome e número de matrícula, com carga horária padrão de 12 horas semanais. 5

Estudo de Caso Construtores 1 public class Professor { public Professor(String n, int m, int c) { setnome(n); setmatricula(m); setcargahoraria(c); public Professor(String n, int m) { setnome(n); setmatricula(m); setcargahoraria(12); Observando mais de perto a implementação dos dois construtores da classe Professor: Nota-se que o segundo construtor (o construtor com dois parâmetros) possui o mesmo código de inicialização do primeiro construtor (o construtor com três parâmetros). Repetir desnecessariamente código não é uma boa prática de programação. Java permite compartilhar código entre os diversos construtores!!! Palavra-chave this(). Estudo de Caso Construtores 2 public class Professor { public Professor(String n, int m, int c) { setnome(n); setmatricula(m); setcargahoraria(c); public Professor(String n, int m) { this(n,m,12); Um construtor pode chamar outro construtor da mesma classe utilizando a chamada this( ). Deve obrigatoriamente ser o primeiro comando do corpo de definição do construtor sobrecarregado. 6

Exercícios 1. Altere a classe Ponto apresentada abaixo para apresentar três construtores: Um sem parâmetros, que cria um ponto nas coordenadas (0,0); Um que recebe dois parâmetros de coordenadas X e Y; Um que inicializa o ponto através das coordenadas de um outro ponto recebido como argumento. 2) Utilizando a classe Ponto, altere e introduza novos métodos na classe Circulo, através da sobrecarga, para realizar as seguintes funções: armazenar as coordenadas do centro em um objeto Ponto; construir novos círculos através da informação de um ponto central e raio; mover um círculo para um novo ponto central qualquer. 3) Desenvolva um programa em Java para testar todos os novos métodos desenvolvidos no exercício anterior para a classe Circulo. 4) Crie uma classe CadastroDePontos que armazena um conjunto de pontos em um ArrayList, e contenha um método para incluir novos pontos no cadastro e um método para imprimir as coordenadas de todos os pontos. 7

4) Acrescente à classe Ponto, desenvolvida anteriormente, a capacidade de calcular a distância entre dois pontos. Para tal, é desejado o seguinte comportamento: calcular a distância entre a instância do ponto e um outro objeto ponto qualquer; calcular a distância entre a instância do ponto e um outro ponto dado pelas coordenadas X e Y; calcular a distância entre dois pontos dadas as coordenadas X1, Y1 e X2, Y2. Obs: A distância entre dois pontos é calculada por: 5) Você está desenvolvendo um sistema de cálculos matemáticos e se depara com um problema: a necessidade de utilização de números complexos. Solicitando ajuda de um matemático, você obtém as seguintes informações: Números complexos possuem a forma parte real + parte imaginária * i como por exemplo 1+3i. i representa a raiz quadrada de -1. O número complexo resultante da soma é aquele cuja parte real é a soma das partes reais dos operandos, e a parte imaginária é a soma das partes imaginárias dos operandos. O número complexo resultante da subtração é aquele cuja parte real é a diferença das partes reais dos operandos, e a parte imaginária é a diferença das partes imaginárias dos operandos. Números complexos podem ser representados por extensão, como 1+3i, ou por uma forma resumida pelo par (parte real, parte imaginária), como (1,3). Um número real a qualquer, é representado pelo número complexo (a,0). Modele e implemente as estruturas necessárias para a utilização de números complexos em um programa Java. 8