Programação por Objectos. Java



Documentos relacionados
Capítulo 3. Programação por objectos em Java

Programação por Objectos. Java

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

Programação por Objectos. Java

POO Programação Orientada a Objetos. Classes em Java

3 Classes e instanciação de objectos (em Java)

Java 2 Standard Edition Como criar classes e objetos

Aula 2. Objetivos. Encapsulamento na linguagem Java; Utilizando a referência this.

Orientação a Objetos com Java

Análise de Programação

Programação Orientada a Objetos (DPADF 0063)

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery

Capítulo 4. Packages e interfaces

Capítulo 8. Introdução UML

Módulo 07 Características Avançadas de Classes

Noções sobre Objetos e Classes

Sintaxe Geral Tipos de Dados. Prof. Angelo Augusto Frozza, M.Sc.

A Linguagem Java. Alberto Costa Neto DComp - UFS

Módulo 06 Desenho de Classes

Prof. Jhonatan Fernando

A Introdução à Programação Orientada a Objetos. Programação e Sistemas de Informação

Técnicas de Programação II

Orientação a Objetos

Construção de novas Classes em Java. Classes Atributos Métodos Herança...

Programação Na Web. Linguagem Java Parte II. break com o nome do bloco. Sintaxe. Nome do bloco. Termina o bloco. António Gonçalves ...

Lista de Contas: Assinatura. Lista de Contas. Listas de Contas: Descrição. Listas de Contas: Descrição. Listas de Contas: Descrição

Curso Adonai QUESTÕES Disciplina Linguagem JAVA

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

Linguagem de Programação III

Introdução à orientação a objetos. João Tito Almeida Vianna 25/05/2013

Introdução a Java. Hélder Nunes

Desenvolvimento OO com Java Orientação a objetos básica

2 Orientação a objetos na prática

Lição 9 Trabalhando com bibliotecas de classes

Programação Orientada a Objetos. Encapsulamento

JSP - ORIENTADO A OBJETOS

Análise e Projeto Orientados por Objetos

Linguagem de Programação I. Orientação a Objetos em Java

Projeto de Software Orientado a Objeto

Programação com Acesso a BD. Programação com OO Acesso em Java

Criar a classe Aula.java com o seguinte código: Compilar e Executar

Programação Orientada a Objetos em Java

Programação Orientada a Objetos

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

Reuso com Herança a e Composiçã

Sobre o Professor Dr. Sylvio Barbon Junior

Java. Marcio de Carvalho Victorino

Programação Orientada a Objetos C++

Guia de Fatores de Qualidade de OO e Java

Programação Orientada a Objetos em Java. Herança

Um objeto é uma instância de uma 'classe'. Você define uma classe utilizando o trecho de código abaixo;

FBV - Linguagem de Programação II. Um pouco sobre Java

Unidade IV: Ponteiros, Referências e Arrays

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

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática

Encapsulamento de Dados

Relacionamentos entre objetos. Relacionamentos entre objetos. Relacionamentos entre objetos. Relacionamentos entre objetos

UNIVERSIDADE FEDERAL DO PARANÁ

Tabelas (arrays) (vetores, matrizes, etc) Algoritmos de pesquisa Algoritmos de ordenação

Algoritmos e Programação II. Sobrecarga

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

DEFINIÇÃO DE MÉTODOS

PHP INTRODUÇÃO CLASSES E OBJETOS

JavaScript 2.0X X

Comandos de repetição For (inicialização; condição de execução; incremento/decremento) { //Código }

A ) O cliente terá que implementar uma interface remota. . Definir a interface remota com os métodos que poderão ser acedidos remotamente

Introdução à Programação. Interface, Polimorfismo e Dynamic Binding

Programação com Objectos. Processamento de Dados I. 3. UML (Unified Modeling Language)

Computação II Orientação a Objetos

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

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

Paradigmas da Programação PPROG. Linguagem JAVA. Interfaces. (Livro Big Java, Late Objects Capítulo 9) Nelson Freire (ISEP DEI-PPROG 2013/14) 1/33

Programação Orientada a Objetos em java. Polimorfismo

2ª LISTA DE EXERCÍCIOS CLASSES E JAVA Disciplina: PC-II. public double getgeracaoatual() {return geracaoatual;}

BSI UFRPE Prof. Gustavo Callou

Capítulo 13. Encapsulamento. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

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

Membros de classe e de instância. PARTE III: Java e OO - detalhes. Exemplo 1: método. Exercício. Exemplo 1 corrigido

ÇÃO COM OBJECTOS PROGRAMAÇÃ. Programação com Objectos. Programação com Objectos TUDO É UM OBJECTO TUDO É UM OBJECTO ÍNDICE.

Material de Apoio 5. int getres() { return res; O que estas classes possuem em comum? 1) 2) 3)

Modulo IIa Extra: Object

Algoritmos e Programação

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

Tópicos da Aula. Classes e Objetos. Classe Pública em Java. Classes em Java. Assinatura de Métodos. Corpo de Classes e Métodos. Conceitos de classe

Programação Concorrente em java - Exercícios Práticos Abril 2004

8 Classes Internas. Desenvolvimento OO com Java. Vítor E. Silva Souza

CONCEITOS DE LINGUAGEM DE PROGRAMAÇÃO CARACTERÍSTICAS. João Gabriel Ganem Barbosa

Java Threads. Introdução

Algoritmia e Programação APROG. Linguagem JAVA. Básico. Nelson Freire (ISEP DEI-APROG 2012/13) 1/31

Slide 1 Deitel/Deitel, 8e. Java Como programar Copyright 2010 Pearson Education

Introdução à Programação com Classes em C++

Programação Orientada por Objetos

Prototype, um Design Patterns de Criação

Orientação a Objetos e a Linguagem Java

UML Aspectos de projetos em Diagramas de classes

Sintaxe Básica de Java Parte 1

Keeper of Knowledge. Capítulo 1 Conceitos Básicos do Java

Programação por Objectos UML UML 1/87

Roteiro 1: Dados, variáveis, operadores e precedência

Programação com Objectos Teste Teórico 04 de Janeiro de 2010, 09:00 (120 minutos)

Transcrição:

Programação por Objectos Java Parte 2: Classes e objectos LEEC@IST Java 1/24

Classes (1) Sintaxe Qualif* class Ident [ extends IdentC] [ implements IdentI [,IdentI]* ] { [ Atributos Métodos ]* Qualif: qualificador (visibilidade, entre outros) Ident: identificador da classe extends IdentC: especialização de superclasse implements IdentI: realização de interfaces LEEC@IST Java 2/24

Classes (2) Qualificadores de classe: public: a classe pode ser publicamente acedida (os membros públicos da classe são disponibilizados em todo o programa). abstract: a classe não pode ser instanciada (normalmente, porque alguns método são apenas protótipos). final: a classe não pode ter subclasses. Na omissão do qualificador public, uma classe é apenas acessível no pacote onde está definida. Uma classe pode ter mais do que um qualificador. Contudo, uma classe não pode ser ao mesmo tempo abstract e final. LEEC@IST Java 3/24

Classes (3) public class Conta { /* atributos */ /* métodos */ LEEC@IST Java 4/24

Atributos (1) Sintaxe Qualif* Tipo Ident [ = Expr ] [, Ident = Expr ]* ; Qualif: qualificador (visibilidade, entre outros) Ident: identificador do atributo Tipo: tipo do atributo Expr: inicialização do atributo LEEC@IST Java 5/24

Atributos (2) Tipos possíveis do atributo: Primitivos: boolean char byte short int long float double Referências: classes e interfaces definidas pelo Java, por exemplo, classe String, e classes e interfaces definidas pelo programador. LEEC@IST Java 6/24

Atributos (3) Qualificadores de atributo: Visibilidade: public: atributo acessível onde quer que a classe seja acessível. private: atributo acessível apenas na classe. protected: atributo acessível na classe, subclasses e classes no mesmo pacote. static: atributo de classe. final: atributo constante. transient: atributo que não vai ser serializado. No caso de omissão de um qualificador de visibilidade, o atributo é acessível na classe e classes no mesmo pacote. Com excepção dos qualificadores de visibilidade, um atributo pode ter mais do que um qualificador. LEEC@IST Java 7/24

Atributos (4) Princípio de encapsulamento da informação: Os atributos não devem ser acedidos fora do objecto a que pertencem, devendo ser apenas alterados por métodos (modificadores). A visibilidade dos atributos deve ser private ou protected. Evitar, o mais possível, o qualificador public. LEEC@IST Java 8/24

Atributos (5) Inicialização dos atributos: Expr pode ser uma constante, um outro atributo, a chamada a um método, ou uma expressão envolvendo qualquer destes. Por omissão, quando um atributo não é inicializado é-lhe atribuído um valor inical, dependente do seu tipo: boolean false char \u0000 byte, short, int, long 0 float, double +0.0 referênca para um objecto null Um atributo pode ser (explicitamente) inicializado: Directamente quando é declarado na classe. Na inicialização da respectiva classe (no caso de atributos static), ou na construção do respectivo objecto (no caso de atributos de instância). LEEC@IST Java 9/24

Atributos (6) Uma constante possui os qualificadores static final. public static final double PI = 3.141592; Um atributo final tem de ser sempre explicitamente inicializado. Quando não é inicializado directamente quando é declarado é dito atributo final em branco. LEEC@IST Java 10/24

Atributos (7) public class Conta{ /* atributos */ private static long numproxconta = 0; protected long numconta; // número da conta protected String dono; // proprietário da conta protected float quantia; // saldo actual /* métodos */ LEEC@IST Java 11/24

Atributos (8) Um atributo de uma classe é acedido pelo operador ponto (. ) na forma referência.atributo. A referência é um identificador de: objecto, se o atributo não tiver qualificador static. classe, se o atributo tiver qualificador static. System.out.println(Conta.numProxConta); LEEC@IST Java 12/24

Objectos Sintaxe Ident = new Classe ([ Expr [, Expr]* ]); Ident: referência para o objecto a ser criado Classe: classe a que pertence o dito objecto Expr: parâmetros a passar ao construtor LEEC@IST Java 13/24

Garbage collector No Java, um objecto existe enquanto for referenciado. O garbage collector destrói objectos não referenciados. Se programador pretender destruir explicitamente um objecto deve: 1. Remover todas as referências ao objecto a eliminar. 2. Invocar o método System.gc(). LEEC@IST Java 14/24

Construtores (1) Um construtor é um método executado na criação de objectos. Têm o mesmo identificador da classe e não podem ser chamados. Parâmetros são os da instrução new. Nunca devolvem tipos, nem mesmo void. Normalmente usados para inicializar os atributos de instância. Uma classe pode ter mais de um construtor. O tipo e o número de argumentos passados a um construtor determinam o construtor a usar. LEEC@IST Java 15/24

Construtores (2) public class Conta{ /* atributos */ private static long numproxconta = 0; protected long numconta; // número da conta protected String dono; // proprietário da conta protected float quantia; // saldo actual /* construtores */ Conta() { numconta = numproxconta++; Conta(String s, float q) { numconta = numproxconta++; dono = s; quantia = q; /* métodos */ LEEC@IST Java 16/24

Construtores (3) Quando uma classe não define nenhum construtor (e só neste caso), o Java providencia uma construtor por omissão (sem argumentos). Um construtor por cópia é um construtor que recebe como argumento um objecto do mesmo tipo que o objecto que vai construir, e constrói o novo objecto com o mesmo estado do objecto recebido. Normalmente, um construtor por cópia apenas atribui o valor dos atributos do objecto recebido ao objecto a ser cirado. /* construtor por cópia */ Conta(Conta c) { numconta = c.numconta; dono = c.dono; quantia = c.quantia; LEEC@IST Java 17/24

Construtores (4) Um construtor pode fazer uma chamada explícita de um outro construtor da classe através do this(). Se o construtor a chamar tiver N parâmetros, estes devem ser passados na chamada explícita this(param1,...,paramn). Se existir, a chamada explícita deve ser a primeira instrução no construtor. Qualquer expressão que é passada como argumento ao construtor explícito não deve incluir nem atributos nem métodos do objecto a ser criado. LEEC@IST Java 18/24

Construtores (5) public class Conta{ /* atributos */ private static long numproxconta = 0; protected long numconta; // número da conta protected String dono; // proprietário da conta protected float quantia; // saldo actual /* construtores */ Conta() { numconta = numproxconta++; Conta(String s, float q) { this(); /* chamada explícita */ dono = s; quantia = q; /* métodos */ LEEC@IST Java 19/24

Inicialização de atributos de instância (1) Um objecto acabado de criar tem um estado inicial: Inicialização por omissão. Inicialização dos atributos na declaração dos mesmos. Quando é necessário mais do que uma inicialização simples: Construtores: usados para inicializar um objecto antes da referência para o objecto ser retornada pelo new. Blocos de inicialização: executados como se estivessem presentes no início dos construtores da classe. Vistos como código de construção de objectos (garantia de correcção no tratamento de atributos finais em branco). Úteis para definir pedaços comuns de código a executar por todos os construtores da classe. LEEC@IST Java 20/24

Inicialização de atributos de instância (2) O construtor é chamado após: Inicialização por omissão dos atributos de instância da classe. Inicialização dos atributos de instância na declaração dos mesmos. LEEC@IST Java 21/24

Inicialização de atributos de instância (3) public class Conta{ /* atributos */ private static long numproxconta = 0; protected long numconta; // número da conta protected String dono; // proprietário da conta protected float quantia; // saldo actual /* construtores */ Conta() { numconta = numproxconta++; Conta(String s, float q) { this(); dono = s; quantia = q; /* métodos */ LEEC@IST Java 22/24

Inicialização de atributos de instância (4) public class Conta{ /* atributos */ private static long numproxconta = 0; { /* bloco de inicialização */ numconta = numproxconta++; protected long numconta; // número da conta protected String dono; // proprietário da conta protected float quantia; // saldo actual /* construtores */ Conta() { Conta(String s, float q) { dono = s; quantia = q; /* métodos */ LEEC@IST Java 23/24

Inicialização de atributos estáticos Os atributos estáticos de uma classe podem ser inicializados: Na declaração dos mesmo. Em blocos de inicialização estáticos. Declarados como static. Só podem manipular membros estáticos da classe. A inicialização dos atributos estáticos de uma classe é feita depois da classe ser carregada, mas antes de ser de facto usada. LEEC@IST Java 24/24