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

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

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

Algoritmos e Programação II. Sobrecarga

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 Orientada a Objeto Construtores e Sobrecarga

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

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

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

Programação Orientada a Objetos com Java. Prof. Júlio Machado julio.machado@pucrs.br

Programação Estruturada e Orientada a Objetos. Objetos e Métodos

Programação Orientada a Objetos

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

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

Linguagem de Programação Orientada a Objeto Abstração - Encapsulamento

COMPORTAMENTOS - Observações

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

Orientação a Objetos e Java

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

Conceitos Básicos da Programação OO

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

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

JAVA TÓPICOS ESPECIAIS DE PROGRAMACAO ORIENTADA A OBJETOS

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

Técnicas de Programação:

Universidade Estadual de Santa Cruz

Atributos e Métodos de Classe

Programação Orientada a Objetos em Java

Programação Orientada a Objetos

Dados armazenados em um objeto podem ser tanto primitivos, tais como inteiros ou caracteres, ou referências para outros objetos.

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

Algoritmos. Algoritmos. Linguagem de programação. Conceitos. Conceitos. Conceitos. Sintaxe do comando para incluir bibliotecas no programa:

Array em Java. Figura 1 - Exemplo de um array de inteiros

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

Programação Orientada a Objetos (DPADF 0063)

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

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

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

AULA 11 PROGRAMAÇÃO ORIENTADA A OBJETOS (INTRODUÇÃO) Disciplina: Programação Orientada a Objetos Professora: Alba Lopes

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

Tipos, Literais, Operadores

AULA 6 - ARRAYS. Array de 10 elementos

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

Objetivo: Aplicar a técnica de encapsulamento no sistema de gestão acadêmica

Programação Orientada a Objetos

Interfaces e Classes Abstratas

Construtores. Introdução

6. Escreva a classe ConversaoDeUnidadesDeTempo com métodos estáticos para conversão aproximada das unidades de velocidade segundo a lista abaixo.

Programação: Vetores

Lição 7 Array em Java

4 Conceito de Herança

Estruturas da linguagem C. 1. Identificadores, tipos primitivos, variáveis e constantes, operadores e expressões.

AULA 8 Polimorfismo de: coerção, overloading, inclusão e paramétrico Prof. Dr. Fernando Henrique Campos

Agenda. O que é um array. Declaração de um array. Instanciação de um array. Acessando os elementos de um array. O tamanho de um array (length)

Introdução à Linguagem de Programação Java 1 INTRODUÇÃO À LINGUAGEM DE PROGRAMAÇÃO JAVA

Atributos e Métodos Estáticos

Linguagem de Programação. Diagrama de classes

Programação Orientada a Objetos

Orientação a Objetos - Herança

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

AULA 16 HERANÇA. Disciplina: Programação Orientada a Objetos Professora: Alba Lopes

Tema da aula Introdução ao paradigma de programação: Orientado a Objetos

Modificadores de Acesso e Atributos de Classe

Computação L2. Linguagem C++ Observação: Material Baseado na Disciplina Computação Eletrônica.

Notas de Aula 04: Herança e polimorfismo.

Lição 4 Fundamentos da programação

Introdução. Atributos em Java. Atributos. Acesso à atributos em Java. Atributo versus variável. Atributos, métodos e encapsulamento.

Linguagens de Programação Aula 12

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

Arrays (Vetores) Arrays (Vetores) 28/04/ Índices. profs. } Ex1: Se eu preciso manipular 100 nomes de pessoas ao mesmo tempo... é melhor...

PROGRAMAÇÃO I E N T R A DA E S A Í DA D E DA D O S

Programação Orientada a Objetos. SANTOS, Rafael (PLT) e Guia de Estudo SCJP. SIERRA, Kathy e BATES, Bert

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

Universidade de Mogi das Cruzes Implementação Orientada a Objetos - Profª. Danielle Martin. Guia da Sintaxe do Java

Aula 3 Conceitos de memória, variáveis e constantes Cleverton Hentz

Ambientação com a Sintaxe de Java: parte 1

Tipos de Dados, Variáveis e Entrada e Saída em C. DCC 120 Laboratório de Programação

//conteúdo do arquivo Matriz.h class Matriz { private: int *elementos; int numerodelinhas; int numerodecolunas; void setnumerodelinhas(int); void

Algoritmos e Estruturas de Dados I. Passagem de Parâmetros. Pedro O.S. Vaz de Melo

Métodos e Procedimentos. Prof. Jesus José de Oliveira Neto

Linguagens de Programação Conceitos e Técnicas. Amarrações

insfcanceof new public switch transient while byte continue extends for int null

Java Variáveis e Controle Fluxo

Linguagem de Programação Orientada a Objeto Polimorfismo, Classes Abstractas e Interfaces

Programação por Objectos. Java

Classes e Encapsulamento

Classes e Objetos. Prof. Leonardo Barreto Campos 1

Introdução à Programação Orientada a Objetos em C++

Transcrição:

Algoritmos e Programação 2 Baseado no material do Prof. Júlio Machado Objetos e Classes em Java Revisão Classes: encapsulam dados (atributos) e operações sobre os dados (métodos) Objetos: instâncias de classes, têm estado (definido pelos atributos) e comportamento (definido pelos métodos) Classes Definições de classes incluem (geralmente): modificador de acesso palavra-chave class nome da classe atributos de instância métodos de instância 1

Modificadores de acesso Permitem definir o encapsulamento de atributos e métodos Dois modificadores principais: private: visível apenas na classe atual public: visível para qualquer classe externa Recomendações A menos que hajam razões fortes, os atributos de uma classe devem ser definidos como private (encapsulamento) e os métodos que são chamados de fora da classe devem ser public (interface de acesso). Métodos que devem ser usados somente dentro da própria classe, devem ser especificados como private. Encapsulamento Objetivo: Esconder como as coisas funcionam por trás de uma interface de acesso. Implementado através dos modificadores de acesso. 2

Métodos get Retornam o valor dos atributos de um objeto, uma vez que não é possível acessálos diretamente. Métodos set Permitem alterar o valor de um atributo. Estes métodos são chamados por alguns autores de transformadores. Exemplo: classe Professor public class Professor { private String nome; private int matricula; private int cargahoraria; private double salariohora;... Atributos estão encapsulados!!! Apenas métodos da própria classe Professor podem acessar os atributos. Métodos:... public void setnome(string n) { nome = n; public String getnome() { return nome; public void setmatricula(int m) { matricula = n; public int getmatricula() { return matricula;... 3

... public void setcargahoraria(int c) { cargahoraria = c; public int getcargahoraria() { return cargahoraria; public void setsalariohora(double s) { salariohora = s; public double getsalariohora() { return salariohora; public double getsalario() { return salariohora * cargahoraria; Notação Gráfica Para melhor visualizar e entender as classes. Representação das classes Relacionamento entre as classes Exemplos: Booch, OMT, UML (Unified Modeling Language) Padrão Atual (mais moderna, mais usada) Notação UML Classe: retângulo dividido em três partes primeira parte: nome da classe segunda parte: atributos terceira parte: métodos Atributos e métodos private: - public: + Professor - nome: String - matricula: int - cargahoraria: int - salariohora: double + setnome (n: String) + getnome ( ): String + setmatricula (m: int) + getmatricula( ): int + setcargahoraria (c: int) + getcargahoraria( ): int + setsalariohora(s: double) + getsalariohora( ): double + getsalario( ): double 4

Instanciação Um objeto depois de criado, conterá todos os atributos e métodos descritos em sua classe. Para instanciar um objeto em Java utilizamos o operador new. Ex.: Professor prof1; prof1 = new Professor(); prof1:professor prof1 NULL prof1 nome=null matricula=0 cargahoraria=0 salariohora=0.0 Para matar um objeto em Java se utiliza null Exemplo: Professor prof1; prof1 = new Professor(); prof1 = null; // coletor de lixo prof1 NULL prof1:professor prof1 nome=null matricula=0 cargahoraria=0 salariohora=0.0 prof1 NULL Quando o operador new é usado é alocada memória. Quando um objeto não é mais necessário, devolve-se o(s) recurso(s) para o sistema. Java realiza a coleta de lixo automática da memória (garbage collector). Quando um objeto não é mais utilizado, ele é marcado para coleta de lixo. 5

Como executar um programa em Java? Um programa é composto de várias classes e objetos. Como indicar por onde o programa começa? Em Java temos um método especial que o interpretador assume como o início do programa: main. public static void main (String args[ ]) public static void main (String args[]){ Professor prof1; prof1 = new Professor(); prof1.setnome( Júlio ); prof1.setmatricula(1234); prof1.setcargahoraria(14); System.out.println(prof1.getCa rgahoraria()); Escopo de Variáveis O escopo de uma variável informa onde ela pode ser utilizada. Ex.: 1: public class VerificaEscopo{ 2: private int escopoa; 3: public void metodo(int escopob){ 4: int escopoc; 5: 6: 6

escopoa é atributo da classe e seu escopo vale em qualquer lugar a partir da linha 1 escopob e escopoc são variáveis locais cujo escopo é válido somente dentro do método Inicialização de Variáveis Atributos de uma classe são inicializados com valores padrão: 0 -> byte, short, int, long 0.0 -> float, double false -> boolean \u0000 -> char null -> Object Variáveis locais declaradas dentro de métodos devem obrigatoriamente serem inicializadas. O compilador Java irá indicar se não inicializarmos as variáveis. Ex.: class Aluguel { private int numero; public void adicitem(){ float itemcusto; int numdias; System.out.println("Numero="+numero); //OK System.out.println("ItemCusto="+itemCusto); //Erro 7

Referências Quando criamos um objeto em Java, mantemos uma referência para o objeto na memória. Ex.: Professor prof1, prof2; prof1 = new Professor();... prof2 = new Professor();... prof1:professor prof2:professor prof1 nome="júlio" matricula=123 cargahoraria=14 salariohora=21.5 prof2 nome="isabel" matricula=321 cargahoraria=40 salariohora=21.5 Ao atribuir prof1 ou prof2 a uma terceira variável, o que irá acontecer? Ex.: Professor prof1, prof2, prof3; prof1 = new Professor();... prof2 = new Professor();... prof3 = prof1; prof1:professor prof2:professor prof1 prof3 nome="júlio" matricula=123 cargahoraria=14 salariohora=21.5 prof2 nome="isabel" matricula=321 cargahoraria=40 salariohora=21.5 Se alteramos algum atributo do objeto referenciado por prof3, estaremos alterando também o referenciado por prof1! Ex.: Professor prof1, prof2, prof3; prof1 = new Professor();... prof2 = new Professor();... prof3 = prof1; prof3.setcargahoraria(12); prof1:professor prof1 prof3 nome="júlio" matricula=123 cargahoraria=12 salariohora=21.5 8

Exercícios 1) Escreva um método para a classe Professor que imprima todos os dados de um determinado professor. Nome: Maria Matrícula: 234 Carga Horária: 8 Salário/Hora: 20.00 Salário: 160.00 2) Escreva uma classe Contador, que apresente métodos para informar o valor inicial, incrementar, decrementar e exibir o valor atual na tela. 3) Exemplifique a utilização desta classe criando uma aplicação que crie vários contadores e use os métodos definidos. Por exemplo, crie 3 contadores e chame alguns métodos para incrementar/decrementar o contador. No final, exiba o valor de cada contador. Inicialização de Objetos Objetos: Estado: definido pelos atributos declarados na classe Comportamento: definido pelos métodos declarados na classe Quais valores os atributos do objeto possuem após a sua instanciação? Como definir o estado inicial do objeto? 9

Exemplo: classe Circulo public class Circulo { private int centrox; private int centroy; private int raio; public double area(){ return (3.14 * raio * raio); public double circunferencia(){ return (2 * 3.14 * raio); public int diametro(){ return (2 * raio); Circulo -centrox:int -centroy:int -raio:int +area():double +circunferencia():double +diametro():int Circulo circ = new Circulo(); circ:circulo circ:circulo centrox=??? centroy=??? raio=??? centrox=0 centroy=0 raio=0 Inicialização padrão de atributos: byte, short, int, long: 0 float, double: 0.0 char: \u0000 boolean: false Object: null Da forma como foi apresentada a classe Circulo, todos os objetos criados a partir dela terão seus atributos inicializados com valores padrão iguais a zero. Como permitir que instâncias da classe Circulo possuam estados diferentes? 10

Construtores O construtor é um código especial responsável pela inicialização dos atributos de instância de um objeto de uma determinada classe. Um construtor em Java: Possui o mesmo nome da classe (respeitando maiúsculas e minúsculas); Pode possuir ou não parâmetros; Não possui um tipo de retorno, nem mesmo void. <modificador_de_acesso> <nome_classe>(<parâmetros>) { //corpo do construtor Exemplo: classe Circulo 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;... -centrox:int -centroy:int -raio:int Circulo +Circulo(x:int, y:int, r:int) +area():double +circunferencia():double +diametro():int 11

Circulo circ = new Circulo(5,1,1); circ:circulo circ:circulo centrox=??? centroy=??? raio=??? centrox=5 centroy=1 raio=1 Quando um objeto é instanciado: Operador new aloca a memória necessária; Construtor é invocado automaticamente para inicializar os atributos do objeto. Construtor Default Se nenhum construtor é definido para uma determinada classe, Java irá definir um construtor padrão (chamado construtor default) Não possui argumentos de entrada e não faz nada. Foi o construtor utilizado até agora! Caso qualquer construtor seja definido na classe, Java não irá disponibilizar o construtor default. Exemplo: classe Circulo -centrox:int -centroy:int -raio:int Circulo +Circulo(x:int, y:int, r:int) +area():double +circunferencia():double +diametro():int Inválido Circulo circ = new Circulo(); Circulo circ = new Circulo(1,1,1); Válido 12

Exercícios 1) Adicione os seguintes comportamentos à classe Circulo: - mover um circulo para qualquer posição; - aumentar o tamanho de um círculo em uma unidade; - diminuir o tamanho de um círculo em uma unidade; - informar uma representação textual do círculo, contendo seu ponto central e raio; 2) Defina novos construtores para a classe Circulo com as seguintes características: - receba como parâmetros o ponto X e Y para o centro; para o raio utilizar o valor padrão 1 - receba como parâmetro o raio; para o ponto X e Y utilizar o valor padrão 0 - receba como parâmetro um outro círculo, gerando uma cópia do mesmo 3) Reimplemente a classe Professor desenvolvida anteriormente para incluir a inicialização de objetos via construtores. 13

4) Suponha que uma casa é formada por 3 peças: uma cozinha circular, uma sala retangular e um banheiro quadrado. Vamos implementar um programa que permita definir as dimensões das peças da casa e calcular sua área. Para tanto implemente as seguintes classes: - classe Cozinha: um método que calcula a área da cozinha, e os atributos e demais métodos necessários para isto; - classe Sala: um método para cálculo da área, e os atributos e demais métodos necessários para tanto; - classe Banheiro: idem. - classe Casa: que tenha 3 atributos (para as três peças da casa), um método para calcular a área da casa, e os atributos e demais métodos necessários. - uma aplicação (uma classe com o método main() ) que instancie 3 casas, calcule e exiba suas áreas. 14