Professional Documents
Culture Documents
Contedo do Curso
Fundamentos da Orientao a Objetos Introduo a Linguagem JAVA JAVA e Orientao a Objetos Erros, Excees, Fluxos de Entrada e Sada Introduo a Aplicaes Grficas em JAVA
AWT SWING
SWITCH/CASE
switch(variavel){ case valor1: instrues; break; case valor2: instrues break; default: instrues; };
IF/ELSE
if(condio){ instrues } else{ instrues }
Seleo
WHILE
while(condio) { instrues; }
DO WHILE
do {
Instrues; } while(condio);
FOR
for(incializao;condio; incremento) { instrues; }
Tecnologia JAVA
O nome "Java" usado para referir-se a Uma linguagem de programao orientada a objetos Uma coleo de APIs (classes, componentes, frameworks) para o desenvolvimento de aplicaes multiplataforma Um ambiente de execuo presente em browsers, mainframes, SOs, celulares, palmtops, cartes inteligentes, eletrodomsticos Java foi lanada pela Sun em 1995. Trs grandes revises Java Development Kit (JDK) 1.0/1.0.2 Java Development Kit (JDK) 1.1/1.1.8 Java 2 Platform (Java 2 SDK e JRE 1.2, 1.3, 1.4, 1.5) A evoluo da linguagem controlada pelo Java Community Process (www.jcp.org) formado pela Sun e usurios Java Ambientes de execuo e desenvolvimento so fornecidos por fabricantes de hardware e software (MacOS, Linux, etc.)
Cdigo Fonte
Compilador
Bytecode
Interpretador
Inst 002
Ambiente JAVA
Editor Compilador disco disco
Memria Principal
Class Loader
disco
Memria Principal
Verificador de ByteCode
Memria Principal
Verificador de bytecode confirma que tudo bytecodes esto vlidos e no violam restries de segurana do Java
Interpretador l bytecodes e os traduz em linguagem que o computador entende
Interpretador
Class Loader
disco
Memria Principal
Verificador de ByteCode
Memria Principal
Verificador de bytecode confirma que tudo bytecodes esto vlidos e no violam restries de segurana do Java
Interpretador l bytecodes e os traduz em linguagem que o computador entende
Interpretador
Class Loader
disco
Memria Principal
Verificador de ByteCode
Memria Principal
Verificador de bytecode confirma que tudo bytecodes esto vlidos e no violam restries de segurana do Java
Interpretador l bytecodes e os traduz em linguagem que o computador entende
Interpretador
Class Loader
disco
Memria Principal
BYTECODE
Verificador de bytecode confirma que tudo bytecodes esto vlidos e no violam restries de segurana do Java
Interpretador l bytecodes e os traduz em linguagem que o computador entende
Verificador de ByteCode
Memria Principal
Interpretador
J2EE
Java 2 Enterprise Edition
ferramentas e APIs para o desenvolvimento de aplicaes distribudas
J2ME
Java 2 Micro Edition
ferramentas e APIs para o desenvolvimento de aplicaes para aparelhos portteis
Plataforma J2SE
Algumas IDEs
O JDK no uma ambiente com interfaces grficas.
Para habilitar o ambiente via linha de comando preciso colocar o caminho $JAVA_HOME/bin no PATH do sistema
Para facilitar o desenvolvimento, pode-se contar com algumas IDEs (Integrated Development Environment):
NetBeans (www.netbeans.org) Eclipse (www.eclipse.org) JBuilder (www.borland.com) JEdit (www.jedit.org) JDeveloper(www.oracle.com)
Ambiente de Execuo
J2SDK
Para habilitar o ambiente via linha de comando preciso colocar o caminho $JAVA_HOME/bin no PATH do sistema.
sim
Bytecode Verifier
no
Tradutor JIT: Just-In-Time Compiler. Gera cdigo nativo a partir de bytecodes para maior desempenho
Interpretador
HARDWARE
Bytecode Verifier
Etapa que antecede a execuo do cdigo em classes carregadas atravs da rede
Class Loader distingue classes locais (seguras) de classes remotas (potencialmente inseguras)
Verificao garante
Aderncia ao formato de arquivo especificado [JVMS] No-violao de polticas de acesso estabelecidas pela aplicao No-violao da integridade do sistema Ausncia de estouros de pilha Tipos de parmetros corretamente especificados e ausncia de converses ilegais de tipos
Coleta de Lixo
Memria alocada em Java no liberada pelo programador
Ou seja, objetos criados no so destrudos pelo programador
Coleta de Lixo
Mensagem m,n,p;
m = new Mensagem("A"); n = m; p = new Mensagem("B");
heap
m
pilha
n
p
"A"
GC
objetos
"B"
processo interno (thread) do garbage collector
Coleta de Lixo
Quando um objeto no tem mais referncias apontando para ele, seus dados no mais podem ser usados, e a memria deve ser liberada. O coletor de lixo ir liberar a memria na primeira heap oportunidade
n = null; p = new Mensagem("C");
pilha
m
"A"
GC
n
p
"B"
objeto sem referncias candidato remoo pelo GC
Compilando e Executando
Via linha de comando:
Compilao:
javac NomePrograma.java
Execuo:
java NomePrograma
Identificando Erros
Durante o desenvolvimento, erros podem ocorrer em dois domnios: tempo de compilao e tempo de execuo Erros ocorridos durante a fase de compilao ocorrem quando se
executa o javac, e so fceis de corrigir. H dois tipos:
Erros de processamento do arquivo (parsing): ponto-e-vrgula faltando, parnteses, aspas, chaves ou colchetes descasados. Identifica apenas o arquivo e a linha onde o erro pode ter iniciado. Um erro causa vrios outros e nem sempre a mensagem precisa. Erros de compilao do cdigo, realizada depois do parsing: alm da linha e do arquivo, identificam a classe e mtodo. Geralmente as mensagens so bastante elucidativas.
Paradigmas de Programao
A introduo de uma nova forma de programar altera todo o desenvolvimento
Anlise, Projeto, Implementao
Estruturado X OO
Principal diferena
Forma pela qual os dados e procedimentos intercomunicam-se
Estruturado
Os procedimentos so implementados em mdulos separados e a comunicao se d pela passagem de dados atravs desses procedimentos
OO
Dados e procedimentos fazem parte de um s mdulo (classe/objeto) Encapsula-se dados e os procedimentos que atuam sobre seus dados em um nico mdulo
Orientao a Objetos
Definio:
Uma nova maneira de pensar os problemas utilizando modelos organizados a partir de conceitos do mundo real. O componente base o objeto que combina estrutura e comportamento em uma nica entidade.
Orientao a Objetos uma metodologia de programao, assim como a procedimental, orientada eventos, etc. Tudo objeto
Conceitos da OO
Classe/Objeto
Mensagem
Encapsulamento
Herana
Polimorfismo
Classe/Objeto
Classe Pessoa
Anderson
Joo
Pedro
Objetos - instncias
Encapsulamento
Com o advento da Internet e a exposio de
dados da classe
Encapsulamento
Agrupa seus registradores internos e disponibiliza ao usurio apenas as funes necessrias. No se tem acesso ao seu Interior. uma caixa preta
Encapsulamento
Para utilizar a classe deve-se conhecer apenas a interface pblica que ela fornece.
Herana
Um mdulo (classe) pode ser quase o que queremos... Simplifica a definio de classes que so quase iguais s que j foram definidas Permite a reutilizao de definies comuns Geralmente identifica-se uma herana quando diz-se a palavra um Por exemplo:
Bicicleta um veculo Carro um veculo Caminho um veculo
Herana
Classe Pai
Bicicleta, Carro e Caminho so veculos. Sendo assim, eles possuem seu comportamento (atributos + mtodos) especfico mais o comportamento herdado. Esse tipo de relacionamento entre classes tambm conhecido como generalizao/especializao. Pois, analisando-se as classes filhas pode-se generalizar o comportamento na Pai. Do mesmo modo analisando-se a classe Pai pode-se especializar classes filhas.
Especializao
Generalizao
Classes Filhas
Mensagens
Objetos se comunicam por meio de mensagens
Um mensagem um sinal enviado um objeto requisitando a execuo de um servio atravs da execuo de uma operao
Essa operao executada dentro do objeto que recebe a mensagem com base nos dados de seus alcance na hierarquia de classes Sender e receiver
Mensagens
Cala.getPreco()
Ex. Um objeto Joo necessita atualizar seu atributo divida. Para isso h necessidade de saber o preo do produto que o Joo comprou. Sendo assim, o mtodo getPreco() da classe Produto deve ser invocado (mensagem) para obter o preo do produto.
Todo-Parte (Agregao)
Esse conceitos permite a construo de uma classe agregada a partir de outras classes componentes. Usa-se dizer que um objeto da classe Agregada (Todo) tem objetos da classe componente (Parte) Por exemplo: Pode-se imaginar esse tipo de relacionamento como uma casa, que composta por portas, janelas, paredes, etc. A pergunta a ser feita para identificar um relacionamento de agregao : parte de ?
Todo-Parte (Agregao)
TODO
PARTES
Todo-Parte (Agregao)
Dessa forma representa-se que um objeto Casa composto pelos objetos Janela, Porta e Parede
Associao
Usada para agrupar objetos que ocorrem sob algumas circunstncias similares ou um ponto especfico no tempo Associao um relacionamento estrutural que ocorre entre classes; Esse relacionamento existe porque um objeto necessita de outros para cumprir certas responsabilidades;
Associao
Cliente
Estudante
Faz
Teste
Sala
Faz
Pedido
Associao - Exemplo
Uma compra um evento que relaciona uma pessoa e um produto e que ocorre em algum ponto do tempo
Polimorfismo
Refere-se diferentes formas de um objeto
Polimorfismo refere-se a capacidade de uma mesma operao realizar funes diferentes dependendo do objeto que a recebe e dos parmetros que lhes so passados.
Por exemplo, pode-se ter em uma classe uma operao denominada calcularDivida(). Caso essa operao seja invocada sem parmetros ela realizar algo, caso seja invocada passando um determinado parmetro realizar algo diferente.
Polimorfismo
Trs mtodos com o mesmo nome, porm, so diferenciados devido a quantidade de parmetros passados
Polimorfismo
Dependendo de quem invoca a msg area, ela ir calcular a rea do objeto correto.
de pacote (opcional) Declaraes de importao (opcional) Declarao de Classe Pblica Declarao de Classes de Pacotes Particulares (opcional)
Questes Lxicas
Comentrios Identificadores Palavras-Chave Reservadas Literais Literais Inteiros Literais de Ponto Flutuante Literais Booleanos Literais de Caracteres Separadores
Durante a compilao, os caracteres no cdigo Java so reduzidos a uma srie de tokens. O compilador Java reconhece cinco tipos de tokens : identificadores, palavras-chave, literais, operadores e separadores. Comentrios e espaos em branco, como tabulao , so usados para separar os tokens.
Literais Um valor constante em Java criado com o uso de uma representao literal do valor. Os inteiros, nmeros de ponto flutuante, valores booleanos, caracteres e strings podem ser colocados em qualquer lugar no cdigo fonte. Um literal representa um valor de determinado tipo, enquanto o tipo em si descreve como aquele valor se comporta e como ele armazenado.
Tipos
Declarao de variveis tipo identificador [ = valor] [, identificador [= valor ... ]; Escopo: Blocos de declarao composta so demarcados por {}. As variveis so vlidas a partir do ponto onde so declaradas at o final da declarao composta. Cada declarao composta pode conter conjunto de declaraes de variveis locais. No permitido declarar duas variveis distintas com o mesmo nome, como no C++. class Escopo{ public static void main(String args[ ]) () { int var = 10; { // cria um novo escopo int var = 20; //Erro de tempo de compilao... } } }
Tipos
Tipos Simples byte short int long float double char boolean Tipos Compostos Array Largura 8 16 32 64 32 64 16 Faixa -128 a 127 -32768 a 32767 -2.147.483.648 a 2.147.483.647 -9.223.372.036.854.775.808... 9.223.372.036.854.775.807 3,4e - 308..1,7e + 308 1,7e - 038..3,4e + 038 0 a 65536 true ou false
Expresses
Operadores Os operadores, da precedncia mais alta a mais baixa so:
. [] ++ -* / + >> >>> > >= == != & ^ | && || ?: = op= () ! % << < ~ instanceof
<=
Operadores
Operador + * / % + += -= *=
Aritmticos
/=
%=
Ao Adio Subtrao e menos unrio Multiplicao Diviso Mdulo (resto da diviso) Incremento Atribuio Aditiva Atribuio Subtrativa Atribuio de Multiplicao Atribuio de Diviso Atribuio de Mdulo (resto de diviso)
Relacionais
Operador == != > < >= <= Ao Igual a Diferente Maior do que Menor do que Maior ou igual a Menor ou igual a
Operadores
Lgico
Operador & | ^ || && ! &= |= ^= == != ?: Ao AND lgico Lgico OR Lgico XOR (OR exclusivo) OR dinmico AND dinmico NOT unrio lgico Atribuio de AND Atribuio de OR Atribuio de XOR Igual a Diferente de if-then-else ternrio
Classe
A forma geral de uma definio de classe aparece a seguir: class nome-classe extends nome-superclasse { tipo var-instancia1; tipo var-instancia2; tipo var-instanciaN; tipo nome-mtodo1 (lista-de-parametros) { corpo do mtodo;
}
Uma outra maneira de representar uma classe da seguinte forma: class nome-classe { }
H mo mnimo uma classe em cada programa JAVA Tipicamente, coloca-se o cdigo do programa para cada classe em um arquivo separado Arquivo fonte JAVA deve ter extenso .java
Biblioteca de Classes = coleo de classes java.lang (apiam as caractersticas bsicas da linguagem) java.io (classes para operaes de E/S de dados java.swing (classes GUI)
Biblioteca de Classes
java.lang raiz java
Biblioteca de Classes
java.lang raiz java Programa JAVA
import java.lang.*;
import java.lang.Classe;
Aplicao JAVA
public class PrimeiroPrograma
{ public static void main(String args[]) { System.out.println(Primeiro Programa);
}
}
Aplicao JAVA
public class PrimeiroPrograma
{ public static void main(String args[]) { System.out.println(Primeiro Programa); Definio do mtodo main
Definio da Classe
}
}
Aplicao JAVA
public class PrimeiroPrograma
{ public static void main(String args[]) { System.out.println(Primeiro Programa); Definio do mtodo main
Definio da Classe
}
} Globalmente acessvel
Aplicao JAVA
public class PrimeiroPrograma
{ public static void main(String args[]) { System.out.println(Primeiro Programa); Definio do mtodo main
Definio da Classe
}
} Globalmente acessvel Ainda acessvel embora no h objeto da classe
Aplicao JAVA
public class PrimeiroPrograma
{ public static void main(String args[]) { System.out.println(Primeiro Programa); Definio do mtodo main
Definio da Classe
}
} Globalmente acessvel No retorna valor Ainda acessvel embora no h objeto da classe
Aplicao JAVA
public class PrimeiroPrograma
{ public static void main(String args[]) { System.out.println(Primeiro Programa); Parmetros necessrios No retorna valor Ainda acessvel embora no h objeto da classe Definio do mtodo main
Definio da Classe
}
} Globalmente acessvel
Exerccio de Fixao
Faa um programa em Java para imprimir o seu respectivo nome e RA Exemplo: nome: Anderson ra: 123456 Faa um programa que de acordo com um nmero inteiro, imprima se ele par ou mpar.
Definindo Classes
class Esfera
{
static final double PI = 3.14; static int count = 0;
double centroZ;
}
Definindo Classes
class Esfera
{
static final double PI = 3.14; static int count = 0; varivel de classe
double centroZ;
}
Definindo Classes
class Esfera
{
static final double PI = 3.14; static int count = 0; varivel com valor fixo
double centroZ;
}
Definindo Classes
class Esfera
{
static final double PI = 3.14; static int count = 0;
double centroZ;
}
{
x = obj.media(3.0, 5.0); } double media (double valor1, double valor2)
{
double resultado = (valor1 + valor2)/2.0; return resultado; }
{
x = obj.media(3.0, 5.0); } double media (double valor, double valor2) 1) Qual valor de x?
{
double resultado = (valor1 + valor2)/2.0; return resultado; }
{
x = obj.media(3.0, 5.0); } double media (double valor1, double valor2) { double resultado = (valor1 + valor2)/2.0; return resultado; } 2) Qual valor de valor1 e valor2? 1) Qual valor de x?
{
x = obj.media(3.0, 5.0); } double media (double valor1, double valor2) { double resultado = (valor1 + valor2)/2.0; return resultado; } 3) Qual valor de resultado? 2) Qual valor de valor1 e valor2? 1) Qual valor de x?
{
x = obj.media(3.0, 5.0); } double media (double valor1, double valor2) { double resultado = (valor1 + valor2)/2.0; return resultado; } 3) Qual valor de resultado? 2) Qual valor de valor1 e valor2? 1) Qual valor de x? 4) Qual valor de x?
{
x = obj.media(3.0, 5.0); } 1) Qual valor de x? 4) Qual valor de x?
5) Qual valor de resultado? 2) Qual valor de double media (double valor1, double valor2) valor1 e valor2? {
double resultado = (valor1 + valor2)/2.0; return resultado; } 3) Qual valor de resultado?
{
x = obj.media(3.0, 5.0); } 1) Qual valor de x? 4) Qual valor de x?
5) Qual valor de resultado? 2) Qual valor de double media (double valor1, double valor2) valor1 e valor2? {
so passados?
{
//Aqui deve ser inserido o cdigo j mostrado static int getCount() { return count; Por que esse mtodo esttico?
}
}
{
//Aqui deve ser inserido o cdigo j mostrado double volume() { return 4.0/3.0*PI*raio*raio*raio;
}
}
A varivel this
Cada mtodo de instncia tem uma varivel com o nome, this, a qual refere-se ao objeto corrente para qual o mtodo foi chamado. Exemplo: mtodo volume( )
A varivel this
Cada mtodo de instncia tem uma varivel com o nome, this, a qual refere-se ao objeto corrente para qual o mtodo foi chamado. Exemplo: mtodo volume( )
this.raio = raio;
}
A varivel this
Cada mtodo de instncia tem uma varivel com o nome, this, a qual refere-se ao objeto corrente para qual o mtodo foi chamado. Exemplo: mtodo volume( )
this.raio = raio;
}
Construtores
Propsito: inicializar as variveis de instncia de um objeto Caractersticas: Nunca retorna um valor No deve especificar um tipo de retorno
Programa 1
Exerccio de Fixao
Um retngulo pode ser descrito pelos valores de suas dimenses como base e altura. Com os valores dessas dimenses pode ser calculada a rea. Sabendo-se disso faa: a) Uma classe que represente um retngulo, nela deve haver um mtodo para o clculo da rea. b) Uma classe de teste para ler as informaes de um retngulo e imprimir o valor de sua rea
Exerccio de Fixao
Em uma disciplina, um aluno descrito por nome, ra, e o valor de suas duas notas bimestrais. a) Faa uma classe para representar um aluno e nela implemente um mtodo para retornar se o aluno foi aprovado ou no (mdia > 7). b) Faa uma classe de teste para ler as informaes de dois alunos e imprimir a situao deles.
Exerccio de Fixao
Em uma cidade est sendo feita uma pesquisa sobre restaurantes. Para cada restaurante cadastrado o nome, o nome do dono, e o preo de 2 pratos mais vendidos. Sabendo-se disso, faa: a) Uma classe para representar o restaurante e nela inclua: Um mtodo que efetua o clculo do valor mdio de um prato. b) Faa uma classe de teste que leia as informaes de 2 restaurantes e imprima o nome do restaurante e o nome do dono do restaurante.
Exerccio de Fixao
Para cada funcionrio de um empresa so registrados o seu nome, o seu cpf e o valor total efetuado na venda durante um ms. O valor do salrio de um funcionrio de R$600 acrescido de uma comisso de 35% sobre o valor total da venda efetuada no ms. a) Faa uma classe para representar um funcionrio e nela implemente um mtodo que efetua o calculo o salrio do funcionrio. b) Faa uma classe teste que leia as informaes de um funcionrio e imprima o valor de seu salrio.
Sobrecarga de Mtodos
Exemplo: Mltiplos Construtores Esfera(double oRaio, double x, double y, double z)
{
raio = oRaio; centroX = x; } centroY = y; centroZ = y; count++;
Esfera()
{ centroX = 0; centroY = 0; centroZ = 0;
{
raio = oRaio; centroX = x; } centroY = y; centroZ = y; count++;
centroX = x;
}
centroZ = y;
Usando Objetos
Exemplo: Classes Ponto e Linha
class Ponto{ double x, y;
class Linha {
Ponto inicio, fim; Linha(final Ponto inicio, final Ponto fim)
{
this.inicio = new Ponto(inicio); this.fim = new Ponto(fim); } Linha (double inicioX, double inicioY, double fimX, double fimY)
{
inicio = new Ponto(inicioX, fimX); fim = new Ponto(inicioY, fimY); } }
}
}
Usando Objetos
Exemplo: Classes Ponto e Linha
public class Geometrico{ public static void main(String args[])
{
Ponto inicio = new Ponto(0.0, 1.0); Ponto fim = new Ponto(5.0, 6.0); System.out.println(Pontos criados so + inicio e + fim);
Linha linha1 = new Linha(inicio, fim); Linha linha2 = new Linha(0.0, 3.0, 3.0, 0.0); System.out.println(Linhas criadas so + linha1 e + linha2);
}
}
Programa 2
Exerccio de Fixao
Exemplo: Cliente e Endereo
Implemente um programa em JAVA que cadastre clientes para uma loja. Utilize o diagrama de classes abaixo para entender o projeto do programa.
Herana
Possibilidade de criao de uma nova classe baseada em uma classe j definida.
Herana
Possibilidade de criao de uma nova classe baseada em uma classe j definida.
Herana
Possibilidade de criao de uma nova classe baseada em uma classe j definida.
Herana
Herana
pblico protegido privado
Herana
Exemplo: classe Animal public class Animal { private String tipo; public Animal(String oTipo) { tipo = oTipo; } }
Exemplo: classe Animal public class Cachorro extends Animal { private String nome, raca; public Cachorro(String oNome) { super(Cachorro); nome = oNome; raca = desconhecida; } public Cachorro(String oNome, String aRaca) { super(Cachorro); nome = oNome; raca = aRaca; } }
Herana
Programa 3
Exemplo: definir um mtodo na classe derivada com a mesma assinatura de um mtodo da classe base
public class Animal { public String toString() { return Isso um: + tipo; } } public class Cachorro extends Animal { public String toString() { return Nome: + nome + Raa: + raca; } }
Herana
Programa 3
Exemplo: definir um mtodo na classe derivada com a mesma assinatura de um mtodo da classe base mas ainda usando a sada da classe base
public class Animal { public String toString() { return Isso um: + tipo; } } public class Cachorro extends Animal { public String toString() { return super.toString() + Nome: + nome + Raa: + raca; } } Programa 3
Herana
Exerccio de Fixao
Exemplo: Cliente especializado em Fsico ou Jurdico Implemente um programa em JAVA que cadastre clientes para uma loja. Esse clientes podem ser do tipo fsico ou jurdico. Utilize o diagrama de classes abaixo para entender o projeto do programa.
Exerccio de Fixao
Exemplo: Cliente especializado em Fsico ou Jurdico Implemente um programa em JAVA que cadastre clientes para uma loja. Esse clientes podem ser do tipo fsico ou jurdico. Utilize o diagrama de classes abaixo para entender o projeto do programa.
Lembre-se, todo Fisico ou Juridico so Clientes. Sendo assim, qualquer mtodo que tiver um parmetro Cliente pode receber tanto um cliente Fisico quanto um Juridico.
Usando Polimorfismo
Condies para ter um polimorfismo: A chamada do mtodo para um objeto de classe derivada deve ser atravs de uma varivel do tipo da classe base. O mtodo chamado deve ser tambm um membro da classe base. A assinatura do mtodo deve ser a mesma nas classes base e derivada. O tipo de retorno do mtodo deve ser o mesmo nas classes base e derivada. Exemplo: Exemplo dos Animais
Programa 4
Cachorro
Gato
Pato
Poodle
Programa 5
Classes Abstratas
Definio: uma classe na qual um ou mais mtodos so declarados, mas no definidos. Exemplo: mtodo som( ) da classe Animal
Classes Abstratas
Definio: uma classe na qual um ou mais mtodos so declarados, mas no definidos. Exemplo: mtodo som( ) da classe Animal
Exerccio de Fixao
Implementar o diagrama ao lado utilizando a classe abstrata Funcionrio e o mtodo abstrato calcularSalario( ).
A SuperClasse Universal
Definio: todo classe criada herda as caractersticas da classe Object. Exemplo: class Animal extends Object
Object
Classe 1
Classe 2
Se quero fazer algo especfico com o objeto da classe1, utilizo cast Classe1 c = (Classe1) obj;
Exemplo: mtodo toString()
Classe 1.1
Classe 1.2
Interfaces
Definio: uma coleo de constantes e mtodos abstratos. Como utilizar: implementando a interface em uma classe. Propsito: as interfaces so geralmente utilizadas para duas coisas: 1. Uma alternativa para falta de herana mltipla 2. Restringir o nmero de mtodos que uma classe pode invocar
Interfaces
Alternativa para Herana Mltipla
Interfaces
Restringir acesso
Sistema Atual
Interfaces
Restringir acesso Com interface
Interfaces
Declarao:
public class Funcionario implements IFuncDepto { ... public abstract int calcularSalario(int diasUteis); } Veja Exemplo dos Animais
Exerccio de Fixao
Funcionario
codigo : int nome : String endereco : Endereco salarioMensal : int situacaoTrabalhista : boolean calcularSalario() getSituacaoTrabalhista() getQualificacoes() calcularTempoDependencia() getExperienciaProfissional() getFormacaoAcademica()
Departamento
codigo : int descricao : String funcionarios : Vector calcularFolhaPagamento() admitirFuncionario() demitirFuncionario() listarNomeFuncionarioESalarioFixo() listarNomeFuncionarioEsalario()
Endereco
rua : String numero : int bairro : String cidade : String
IFuncDepto
calcularSalario(diasUteis : Integer)
Assalariado
Comissionado
porcentagem = 0.20