Sei sulla pagina 1di 29

Java Bsico Fundamentos da linguagem de programao Java

Mdulo 2
Programao Orientada a Objetos

Fundamentos da Linguagem de Programao Java

Java Bsico Fundamentos da linguagem de programao Java

Objetivos do Mdulo
Definir os conceitos: abstrao, encapsulamento e pacotes Discutir por que podemos reusar cdigo de uma aplicao na tecnologia Java Definir classe, membro, atributos, mtodos, construtor e pacote Usar os modificadores de acesso private e public como guia para encapsulamento Invocar um mtodo em um objeto particular

Fundamentos da Linguagem de Programao Java

Mdulo 2, 2-29

Java Bsico Fundamentos da linguagem de programao Java

Objetivos do Mdulo
Em um programa Java, identificar o seguinte: A declarao de pacote (package) As declaraes import Classes, mtodos, e atributos Construtores Usar a documentao de online da API Java (Application Programming Interface)

Fundamentos da Linguagem de Programao Java

Mdulo 2, 3-29

Java Bsico Fundamentos da linguagem de programao Java

Abstrao
Funes Escrever um algoritimo que pode ser usado em vrias situaes. Objetos Agrupam um conjunto de atributos relacionados e comportamentos dentro de uma classe. Frameworks and APIs Conjunto de objetos que so desenvolvidos para darem suporte a atividades complexas.

Fundamentos da Linguagem de Programao Java

Mdulo 2, 4-29

Java Bsico Fundamentos da linguagem de programao Java

Classes como Gabarito para Construo de Objetos


Se pudermos desenvolver uma comparao, as Classes, na linguagem Java, so como em uma Fbrica, o Gabarito de construo de uma Ferramenta, que pode ser usada para construir outras Ferramentas. Classes so receitas usadas para instanciar (criar) Objetos. Classes definem (na receita) os tipos de atributos do Objeto (dados do objeto) bem como os comportamentos deste objeto (que so os mtodos) Juntos, atributos e mtodos so chamados de Membros da Classe. Java implementa 3 caractersticas chaves de Programao Orientada a Objetos: Encapsulamento, Herana e Polimorfismo
Fundamentos da Linguagem de Programao Java
Mdulo 2, 5-29

Java Bsico Fundamentos da linguagem de programao Java

Declarando Classes em Java


Sintaxe bsica para declarao de classes em Java
<class_declaration> ::= <modifier> class <name> { <attribute_declaration>* <constructor_declaration>* <method_declaration>* }

Exemplo:
public class Veiculo { private String cor; public void setCor(String value) { cor = value; } }
Fundamentos da Linguagem de Programao Java
Mdulo 2, 6-29

Java Bsico Fundamentos da linguagem de programao Java

Declarando Atributos
Sintaxe bsica de um atributo
<attribute_declaration> ::= <modifier> <type> <name> [= <default_value>]; <type> ::= byte | short | int | long | char float | double | boolean | <class>

Exemplos:
public class Foo public int private float private String } { x; y = 12626.0F; name = "Fred Flintstone";

Fundamentos da Linguagem de Programao Java

Mdulo 2, 7-29

Java Bsico Fundamentos da linguagem de programao Java

Declarando Mtodos
Sintaxe bsica de um mtodo
<method_declaration> ::= <modifier> <return_type> <name> (<parameter>*) { <statement>* } <parameter> ::= <parameter_type> <parameter_name>,

Exemplos:
public class Dog { private int weight; public int getWeight() { return weight; } public void setWeight(int new_weight) { weight = new_weight; } }
Fundamentos da Linguagem de Programao Java
Mdulo 2, 8-29

Java Bsico Fundamentos da linguagem de programao Java

Acessando Membros dos Objetos


O operador ponto: <object>.<member> Usado para acessar membros do objeto incluindo atributos e mtodos de uma Classe. Exemplos:
dog.setweight(47); dog.weight = 47; // Permitido somente se o atributo weight // for public

Fundamentos da Linguagem de Programao Java

Mdulo 2, 9-29

Java Bsico Fundamentos da linguagem de programao Java


Mdulo 2 Exerccio 1 Criando uma Classe
2.1 Objetivo Criar uma classe Data com atributos e mtodos. 2.2 Tarefa 1. Criar um projeto no Eclipse chamado Modulo2Exercicio1. 2. Criar uma classe chamada Data que contenha os seguintes atributos: dia mes ano

3. Criar um mtodo chamado exibirData(), dentro da classe Data, que imprima a data no formato dd/mm/yyyy, atravs dos atributos dia, mes e ano da classe Data. 4. Criar uma classe DataTest, que contenha o mtodo main. Dentro do mtodo main: Declarar e instnciar uma varivel de referncia para um objeto da classe Data, setar seus atributos, e executar o mtodo exibirData().

5. Compilar e executar o seu programa.


Fundamentos da Linguagem de Programao Java
Mdulo 2, 10-29

Java Bsico Fundamentos da linguagem de programao Java

Information Hiding (A informao escondida)


O problema:
Representao UML: + = Indica que a varivel ou o mtodo, so Pblicos - = Indica que a varivel ou o mtodo, so Privados # = Indica que a varivel ou o mtodo, so Protegidos

O cdigo Cliente tem acesso direto aos dados internos do objeto, e com isso, dados invlidos podem ser armazenados.

Fundamentos da Linguagem de Programao Java

Mdulo 2, 11-29

Java Bsico Fundamentos da linguagem de programao Java

Information Hiding (A informao escondida)


Exemplo:
MyDate d = new MyDate() d.day = 32; // dia invlido d.month = 2; d.day = 30; // dia no permitido no ms d.day = d.day + 1; // no valida o dia
Suponha que se tenha a classe MyDate que contm 3 atributos: day, month e year, como descrito ao lado. Nesta implementao, o cdigo cliente permite acesso direto s variveis (atributos).

Desta forma, poderamos ter uma data 32/13/2263 o que estaria errado do ponto de vista de representao de data, porm o sistema no poderia criticar pois as variveis possuiriam valores vlidos, do ponto de vista de programao.

Fundamentos da Linguagem de Programao Java

Mdulo 2, 12-29

Java Bsico Fundamentos da linguagem de programao Java

Information Hiding (A informao escondida)


A soluo:
O cdigo cliente deve usar mtodos setters / getters para acessar atributos internos da classe.

MyDate d = new MyDate() d.setDay(32); // dia invlido, retorna false d.setMonth(2); d.setDay(30); // dia no permitido no ms, retorna false d.setDay(d.getDay() + 1); // retorna false se dia for permitido

Fundamentos da Linguagem de Programao Java

Mdulo 2, 13-29

Java Bsico Fundamentos da linguagem de programao Java

Encapsulamento
Esconde detalhes de implementao de uma classe. Fora o usurio a utilizar uma interface para acessar os dados. Torna o cdigo mais fcil de se realizar manuteno.

Fundamentos da Linguagem de Programao Java

Mdulo 2, 14-29

Java Bsico Fundamentos da linguagem de programao Java

Declarando Construtores
Sintaxe bsica de um construtor
<constructor_declaration> ::= <modifier> <class_name> (<parameter>*) { <statement>* }

Exemplos:
public class Thing { private int x; public Thing() { x = 47; } public Thing(int new_x) { x = new_x; } }
Fundamentos da Linguagem de Programao Java
Mdulo 2, 15-29

Java Bsico Fundamentos da linguagem de programao Java

Declarando Construtores
public class Thing { private int x; public Thing() { x = 47; } public Thing(int new_x) { x = new_x; } public int getX() { return x; } public void setX(int new_x) { x = new_x; } }

Fundamentos da Linguagem de Programao Java

Mdulo 2, 16-29

Java Bsico Fundamentos da linguagem de programao Java

Declarando Construtores
Usando o exemplo:
public class TestThing { public static void main(String[] args) { Thing thing1 = new Thing(); Thing thing2 = new Thing(42); System.out.println("thing1.x is " + thing1.getX()); System.out.println("thing2.x is " + thing2.getX()); } }

Sada:
thing1.x is 47 thing2.x is 42

Fundamentos da Linguagem de Programao Java

Mdulo 2, 17-29

Java Bsico Fundamentos da linguagem de programao Java

Construtor Default
Toda classe sempre ter pelo menos um construtor. Se no for definido um construtor, Java ir criar um construtor default automticamente. Construtor Default: No possui argumentos; Sempre ter o mesmo modificador de acesso da classe; No possui corpo para incluso de cdigo; A funo do construtor default permitir que um objeto seja instanciado atravs da instruo new Xxx( ).

Fundamentos da Linguagem de Programao Java

Mdulo 2, 18-29

Java Bsico Fundamentos da linguagem de programao Java

Layout de Arquivo fonte de um programa Java


Sintaxe bsica de um programa fonte na linguagem Java:
<source_file> ::= [< package_declaration>] <import_declaration>* <class_declaration>+

Exemplo do arquivo fonte do programa VehicleCapacityReport.java


package shipping.reports; import shipping.domain.*; import java.util.List; import java.io.*;

public class VehicleCapacityReport { private List vehicles; public void generateReport(Writer output) {...} }
Fundamentos da Linguagem de Programao Java

Mdulo 2, 19-29

Java Bsico Fundamentos da linguagem de programao Java

Pacotes de software
Pacotes ajudam a gerenciar sistemas grandes e complexos. Pacotes podem conter classes e sub-pacotes.

Fundamentos da Linguagem de Programao Java

Mdulo 2, 20-29

Java Bsico Fundamentos da linguagem de programao Java

A instruo package
Sintaxe bsica da declarao package:
<package_declaration> ::= package <top_pkg_name>[.<sub_pkg_name>]*;

Exemplo:
package shipping.reports.web;

Deve ser definido no incio do arquivo fonte Java. S pode existir uma (1) declarao de pacote por programa fonte. Se no for definido nenhum package, ento a classe pertencer a um package defalut. Os nomes dos pacotes devem ser hierrquicos e separados por ponto (.)

Fundamentos da Linguagem de Programao Java

Mdulo 2, 21-29

Java Bsico Fundamentos da linguagem de programao Java

A instruo import
Sintaxe bsica da declarao import:
<import_declaration> ::= import <pkg_name>[.<sub_pkg_name>]*.<class_name | *>;

Exemplo:
import shipping.domain.*; import java.util.List; import java.io.*;

Deve ser definido antes de todas as declaraes de classes e abaixo da instruo package.

Diz ao compilador, onde encontrar as classes para utilizar.


O uso do * no afeta performance

Fundamentos da Linguagem de Programao Java

Mdulo 2, 22-29

Java Bsico Fundamentos da linguagem de programao Java

Layout de diretrio e Pacotes


Pacotes so armazenados em uma rvore de diretrios contendo o nome do pacote. Exemplo da organizao em pacotes da aplicao shipping:

Fundamentos da Linguagem de Programao Java

Mdulo 2, 23-29

Java Bsico Fundamentos da linguagem de programao Java

Layout de diretrio e Pacotes

Compilando usando -sourcepath e -d


> cd JavaProjects/BankPrj/src/banking/domain > javac -sourcepath JavaProjects/BankPrj/src javac -d JavaProjects/BankPrj/class *.java
Fundamentos da Linguagem de Programao Java
Mdulo 2, 24-29

Java Bsico Fundamentos da linguagem de programao Java

Usando a documentao da API do Java


A documentao API composta por um conjunto de arquivos HTML (Hypertext Markup Language) que a documentam. Um pacote contm hyperlinks para informaes de todas as classes do pacote. A documentao da classe inclui a hierarquia da classe, uma descrio da classe, construtores, membros da classe e assim por diante. URL da especificao J2SE http://java.sun.com/j2se/version/docs/api/index.html Exemplo: http://java.sun.com/j2se/1.5.0/docs/api/index.html

Fundamentos da Linguagem de Programao Java

Mdulo 2, 25-29

Java Bsico Fundamentos da linguagem de programao Java

Exemplo da documentao API do Java

Fundamentos da Linguagem de Programao Java

Mdulo 2, 26-29

Java Bsico Fundamentos da linguagem de programao Java


Mdulo 2 Exerccio 2 Usando Objetos e Classes
2.1 Objetivo Familiarizar-se com Java 2 SDK API Explorar o encapsulamento para a classe Data

2.2 Tarefa 1. Usar o browser para explorar a Java 2 SDK API 2. Criar um projeto no Eclipse chamado Modulo2Exercicio2. 3. Alterar os atributos da classe Data de public para private. 4. Definir um construtor para a classe Data que receba por argumento, 3 valores inteiros e atribua para os atributos da classe Data. 5. Criar mtodos getters e setters para os atributos da classe Data. 6. Gerar a especificao para a classe Data.

Fundamentos da Linguagem de Programao Java

Mdulo 2, 27-29

Java Bsico Fundamentos da linguagem de programao Java


Mdulo 2 Exerccio 2 Usando Objetos e Classes
2.2 Tarefa Criar uma classe DataTwoTest, que contenha o mtodo main. Dentro do mtodo main: Declarar e instnciar 2 variveis de referncia para objetos da classe Data, onde: a. A primeira utilize os mtodos de atribuio para setar os atributos da classe Data. b. A segunda carregue os atributos da classe Data atravs do construtor que rebece os 3 argumentos inteiros. c. Executar o mtodo exibirData(), para os dois objetos. 8. Compilar e executar o seu programa.

Fundamentos da Linguagem de Programao Java

Mdulo 2, 28-29

Java Bsico Fundamentos da linguagem de programao Java

Verifique seu Progresso


Definir os conceitos de modelagem: abstrao, encapsulamento e paccotes. Discutir por que voc pode re-utilizar cdigo na tecnologia de aplicao Java. Definir classe, membro, atributos, mtodo, construtor e pacote.

Usar os modificadores de acesso private e public como meio de implementar o encapsulamento.


Invocar um mtodo em um objeto particular

Fundamentos da Linguagem de Programao Java

Mdulo 2, 29-29

Potrebbero piacerti anche