Programação Orientada a Objetos (DPADF 0063)

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

Classes e Objetos. Sintaxe de classe em Java

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

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

Linguagem de Programação III

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

Análise de Programação

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

Linguagem de Programação II Implementação

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

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

Linguagem de Programação II Implementação

Tipos, Literais, Operadores

Tipos, Literais, Operadores

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

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

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

Palavras Reservadas da Linguagem Java

Orientação a Objetos e Java

Vetores. IFSC/Florianópolis - Programação Orientada a Objetos + POO - prof. Herval Daminelli

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

Aula 6 POO 1 Construtores. Profa. Elaine Faria UFU

Linguagem de Programação III

Lição 4 Fundamentos da programação

Programação Orientada a Objetos

Algoritmos II prof. Daniel Oliveira

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

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

Conceitos Básicos da Programação OO

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

Fundamentos de Programação. Linguagem C++ aula II - Variáveis e constantes. Prof.: Bruno Gomes

Java Básico. Carga Horária: 32 horas. Pré-requisito: Lógica de Programação; JAVA. Conteúdo Programático

Linguagem de programação Java

Classes, Métodos e Propriedades

Java Variáveis e Controle Fluxo

Vetores. IFSC/Florianópolis - Programação Orientada a Objetos + POO - prof. Herval Daminelli

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

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

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

PROGRAMAÇÃO ESTRUTURADA E ORIENTADA A OBJETOS

Laboratório de programação II

Programação por Objectos. Java

AULA 6 - ARRAYS. Array de 10 elementos

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

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

1 Introdução e Conceitos básicos

Programação Orientada a Objetos

Programação de Computadores I Introdução ao C PROFESSORA CINTIA CAETANO

Linguagem de Programação II Programação Orientada a Objetos. Orientação a Objetos

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

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

PROGRAMAÇÃO ORIENTADA A OBJETOS JAVA

Programação Orientada a Objetos II

Tipos Básicos. Operadores de Incremento e Decremento. Operador Sizeof. Estruturas de Dados Aula 2: Estruturas Estáticas

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

String. Demonstrar a utilização e manipulação com os métodos da classe String.

Variáveis primitivas e Controle de fluxo

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

LÓGICA DE PROGRAMAÇÃO (JAVA) VARIÁVEIS. Professor Carlos Muniz

Programação Orientada a Objetos

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

Especificam quem tem acesso a cada entidade, isto é, quem tem acesso a. cada classe e cada membro da classe (dados e métodos)

Linguagem de Programação III

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

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

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

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

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

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 II Java Segunda aula. Prof. Rogério Albuquerque de Almeida

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

02. [Sebesta, 2000] Quais são as vantagens e as desvantagens dos tipos de dados decimais?

ALGORITMOS. Professor: Diego Oliveira. Aula 06 - Tipos Primitivos de Dados

Módulo 03. Identificadores, Palavras Reservadas, e Tipos

Herança. Prof. Fernando V. Paulovich 23 de agosto de 2010

Aula 3 POO 1 Classe e Objeto. Profa. Elaine Faria UFU

Introdução a Programação. Tipos Estruturados de Dados

Conceitos de Programação Orientada a Objetos

CA: Cidade: UF CARTÃO RESPOSTA QUESTÃO RESPOSTA QUESTÃO RESPOSTA A F B G C H D I

Transcrição:

Programação Orientada a Objetos (DPADF 0063) Aula 3 Abstração Universidade Federal de Santa Maria Colégio Agrícola de Frederico Westphalen Curso Superior de Tecnologia em Sistemas para Internet Prof. Bruno B. Boniati www.cafw.ufsm.br/~bruno

Classes x Objetos

Abstração Habilidade de generalizar, ou seja de se concentrar nos aspectos realmente importantes de um conceito ou fenômeno, ignorando características menos importantes ou acidentais; Na POO, uma classe é uma abstração de entidades existentes no domínio do sistema de software;

O que é uma classe A classe é a unidade básica de trabalho em um programa orientado a objetos; A maior parte do trabalho em POO consiste em modelar classes; Representa um modelo abstrato a partir do qual são criadas instâncias;

O que um objeto Objeto é uma instância da classe; É uma representação real da classe que ocupa espaço na memória e consome recursos do computador; A classe é a descrição de um tipo de objeto; Objeto está para classe da mesma forma que variável está para tipo de dado.

Atributos & Métodos A classe é uma coleção de dados (atributos) e operações (métodos) que manipulam tais dados Atributos São os dados (simples ou compostos) que caracterizam os objetos daquela classe; São armazenadas em variáveis; Constituem o estado do objeto. Operações São os métodos (procedimentos ou funções) que manipulam os dados;

Uma classe em Java... class Hora { private int hora; private int minuto; private int segundo; public void sethorario(int h, int m, int s) {... public void sethora(int h) {... public void setminutos(int m) {... public void setsegundos(int s) {... Arquivo Hora.java (Após a compilação dará origem ao arquivo Hora.class) public String gethorario() {... Inicia com a palavra reservada class; Convenciona-se utilizar o nome da classe com a 1ª letra em maiúscula; Uma { (abre chave) marca o início e (fecha chave) marca o fim da classe; Normalmente cada classe é salva como um arquivo de mesmo nome da classe com extensão.java;

Uma classe em Java... (cont.) public class Hora { private int hora; private int minuto; private int segundo; Atributos (Variáveis de Instância) public void sethorario(int h, int m, int s) {... public void sethora(int h) {... public void setminutos(int m) {... public void setsegundos(int s) {... public void sethoraatual() {... public String gethorario() {... Operações (Métodos de Instância) Atributos e métodos iniciam pelo modificador de acesso Atributos obrigatoriamente possuem um tipo; Métodos devem indicar o tipo de retorno ou void quando não retornam nada; Métodos podem receber argumentos (parâmetros) mas sempre terminam com ( e ) mesmo que não os tenham.

Modificadores de acesso (definem o escopo/visibilidade de um método/atributo) public Simbolizado por + Indica que o atributo/método pode ser acessado por objetos de outras classes; private Simbolizado por - Protege o atributo do acesso externo, permitindo ao mesmo ser acessado somente por métodos daquela classe e pelo objeto instanciado; protected Simbolizado por # Permite o acesso a objetos de classes filhas mas protege do acesso de objetos que não fazem parte da hierarquia de classes;

Método main(string [] args) Permite que uma classe seja executada (normalmente pelo menos uma das classes da aplicação precisa ser executada); Quando uma aplicação java é iniciada, a JVM localiza e chama o método main() que recebe por parâmetro um vetor de objetos String representando os parâmetros de linha de comando;

Um objeto em Java Precisa ser identificado enquanto entidade do código (uma variável, um elemento em uma lista, uma posição de um vetor, etc.); O operador new... Aloca memória para o novo objeto (a quantidade necessária é obtida a partir da definição da classe); Chama o construtor da classe para inicializar o estado do novo objeto; Retorna uma referência (um endereço de memória para o objeto recém criado);

Um objeto em Java... (cont.) public class Aplicacao { public static void main(string[] args) { Hora horadoalmoco; horadoalmoco = new Hora(); horadoalmoco.sethorario(12,30,00); Hora horaatual = new Hora(); horaatual.sethoraatual(); Métodos são acessados através do operador. (ponto), precedido pelo nome do objeto (variável) e seguido do nome do método;

Referência null Valor default para inicialização de atributos de tipos não primitivos; Indica que determinado atributo/variável de referência não se refere a nenhum objeto;

Atribuição de referências Referências public class Aplicacao { public static void main(string[] args) { Hora horadoalmoco; horadoalmoco horaatual horadoalmoco = new Hora(); horadoalmoco.sethorario(12,30,0); Hora horaatual = new Hora(); horaatual.sethoraatual(); horaatual = horadoalmoco; h = 12 m = 30 s = 0 Instância Quando atribuímos uma referência para um objeto para outra referência, temos ao final duas referências para um único objeto e não uma cópia do objeto (como seria com tipos primitivos)

Métodos Construtores Método especial chamado automaticamente pelo ambiente de execução quando um objeto é criado; SEMPRE tem o mesmo nome da classe e pode opcionalmente receber parâmetros; Nunca pode ter um tipo de retorno (isso é implícito pois ele retorna uma referência para um objeto da classe em questão).

Métodos construtores public class Hora { private int hora; private int minuto; private int segundo; public Hora(int h, int m, int s) { sethorario(h, m, s); public Hora(int h) { sethorario(h, 0, 0); Métodos construtores (com assinaturas diferentes) public void sethorario(int h, int m, int s) {... public void sethora(int h) {... public void setminutos(int m) {... public void setsegundos(int s) {... public void sethoraatual() {... public String gethorario() {...

Referência this Todos os métodos de instância recebem um parâmetro implícito chamado this que pode ser utilizado dentro do método de instância para se referir ao objeto corrente (cujo método foi invocado); É normalmente utilizado em duas situações: Quando o nome de uma variável de instância é igual ao nome de um parâmetro do método; Quando o método precisa chamar outro método passando por parâmetro uma referência ao objeto atual.

Referência this public class Hora { private int hora; private int minuto; private int segundo; public Hora(int h, int m, int s) { sethorario(h, m, s); public Hora(int h) { sethorario(h, 0, 0); public void sethorario(int hora, int minuto, int segundo) { this.hora = hora; this.minuto = minuto; this.segundo = segundo; Neste caso this resolve a ambiguidade de nomes (parâmetros x atributos)

Variáveis de Classe Também conhecida por variável estática (static); É uma variável comum a todas as instâncias da classe; Há somente uma instância de uma variável de classe, não importa quantas instâncias da classe existam; Não é recomendado que seus valores sejam alimentados por métodos construtores e sim através de inicializadores com valores default.

Variáveis de Classe public class Hora { private int hora; private int minuto; private int segundo; static int fusohorario; public Hora(int h, int m, int s) { sethorario(h, m, s); public Hora(int h) { sethorario(h, 0, 0); static { fusohorario = - 3; Variável de classe É possível definir um bloco inicializador estático que não possui nome nem valor de retorno e começa com a palavra static. Ele funciona de maneira similar a um construtor porém é executado apenas uma vez, quando o primeiro objeto daquela classe for instanciado.

Métodos de Classe Não necessitam de uma instância da classe para que sejam invocados; São definidos com o uso da palavra reservada static. Alguns exemplos (classe Math) Math.sqrt(double a) retorna a raiz quadrada de a. Math.abs(int a) retorna o valor absoluto de a. Math.random() retorna um valor randômico entre zero e um.

Métodos de Classe public class Hora { private int hora; private int minuto; private int segundo; static int fusohorario; public static int diferencaemminutos(hora a, Hora b) { int diferenca;... return diferenca; Método de classe (Pode ser invocado diretamente pela classe, sem a necessidade de uma instância objeto)

Sobrecarga de Métodos Métodos de mesmo nome com assinaturas diferentes (tipos de argumentos/parâmetros diferentes); Valor de retorno não é considerado parte da assinatura; Métodos sobrecarregados são resolvidos em tempo de compilação; public class Hora { private int hora; private int minuto; private int segundo; public void ajustarhorario(int hora, int minuto, int segundo); Estes dois métodos não tem assinaturas diferentes isso não é permitido public void ajustarhorario(int hora, int minuto); public void ajustarhorario(int minuto, int segundo); public void ajustarhorario(int hora);

Atributos final O modificador final indica que o atributo não poderá sofrer alteração em seu valor; Possui o mesmo comportamento de uma constante que deve ser inicializada; Em geral possui um escopo púbico permitindo seu acesso externo; O atributo PI da classe Math é um exemplo de atributo final (que retorna a constante π);

Método finalize Java não implementa o conceito de destrutores (métodos invocados para destruir a instância e liberar seus recursos); Para isso há o conceito de coletor de lixo Contudo, há situações onde é interessante que ao destruir o objeto, outros recursos, que não a memória, venham a ser liberados. Neste caso pode-se definir um método de nome finalize e retorno void que será chamado antes do coletor de lixo eliminar o objeto;

Classe String

Classe String Uma String em Java não são é um tipo primitivo e sim objetos de uma classe com algumas características especiais; Valores literais entre aspas duplas são transformados pelo compilador Java em objetos da classe String;

Classe String (cont.) A classe String representa uma string imutável, ou seja, uma vez criado um objeto String ele não poderá mais ser alterado; O operador + é utilizado como uma das formas de concatenar strings; Tipos primitivos são automaticamente convertidos para Strings em concatenações;

Classe String... exemplos String nome; nome = Testando ; nome = Testando + + Java ; int dez = 10; nome = nome + + dez; Nome = Teste.concat( Java );

Classe String... mais exemplos String s = Testando ; System.out.println(s.length()); // 8 System.out.println(s.charAt(2)); // s System.out.println(s.substring(2,4)); // st System.out.println(s.toUpperCase()); // TESTANDO System.out.println(s.toLowerCase()); // testando System.out.println(s.trim()); // Testando s = Fábrica de brinquedos ; System.out.println(s.indexOf( br )); //2 System.out.println(s.lastIndexOf( br )); //11 System.out.println(s.equals( br )); //false System.out.println(s.equalsIgnoreCase( br )); //false

Classes Wrappers Para cada tipo primitivo, Java fornece uma classe invólucro (wrapper) correspondente. Classes Wrappers permitem que um tipo primitivo seja manipulado como se fosse um objeto; Cada classe wrapper fornece um método estático para conversão de Strings para o tipo primitivo correspondente.

Classes Wrappers Grupo Tipo Primitivo Classe Wrapper Lógico boolean Boolean Caractere char Caracter byte Byte Inteiros short Short int Integer long Long Ponto Flutuante float Float double Double

Conversão (String x Classes Wrapper) Origem Destino Método boolean, char, byte, short, int, long, double, float String String.valueOf(? ) String int Integer.parseInt(? ) String float Float.parseFloat(? )

Variáveis multidimensionais

Variáveis multidimensionais Vetor é uma coleção de objetos do mesmo tipo; Cada elemento pode armazenar um único item. Os itens podem ser Tipos primitivos; Referências para objetos. Quando o vetor é criado seu tamanho é fixado; A primeira posição do vetor é a posição 0 (zero); O tamanho do vetor não precisa ser uma constante, pode ser uma variável definida em tempo de execução;

Variáveis multidimensionais (cont.) Um vetor precisa ser declarado, criado e somente depois acessado; Existem formas equivalentes de se declarar um vetor: int[] numeros; //Declaração int numeros[]; //Declaração numeros = new int[4]; //Criação numeros[0] = 10; //Acesso //Abaixo ñ se utiliza o operador new e o tamanho é detectado automaticamente int[] diasmes = {31,28,31,30,31,30,31,31,30,31,30,31; int num = diasmes.length(); //12

Exercícios para fixação

Classe Hora Para finalizar a implementação da classe Hora, codifique o que se pede: Um novo método construtor que recebe um valor em minutos transcorridos e inicializa os atributos hora e minutos; Três novos métodos para validar os valores informados nos atributos hora, minutos e segundos (considerando o conjunto de valores válidos); Um método estático para indicar a diferença em minutos entre duas horas passadas por parâmetro; Um método para escrever a hora em formado hh:mm:ss