REVISÃO PROGRAMAÇÃO ORIENTADA A OBJETOS UTILIZANDO JAVA

Tamanho: px
Começar a partir da página:

Download "REVISÃO PROGRAMAÇÃO ORIENTADA A OBJETOS UTILIZANDO JAVA"

Transcrição

1 AUTOR: CESAR AUGUSTO TACLA CRIAÇÃO: 5/3/ :16 ÚLT. ALTERAÇÃO: 22/9/ :09 PR UNIVERSIDADE TECNOLÓGICA FEDERAL DO PARANÁ REVISÃO PROGRAMAÇÃO ORIENTADA A OBJETOS UTILIZANDO JAVA Prof. Cesar Augusto Tacla Departamento Acadêmico de Informática

2 O uso e reprodução desta apostila requerem autorização expressa do autor. 2

3 SUMÁRIO 1 OBJETO CLASSE Atributos Métodos Encapsulamento Construtores Membros de Classe e de Instância Escopo de Variáveis HERANÇA POLIMORFISMO Sobrecarga Sobreposição/Reescrita (override) Princípio da substituição CLASSES ABSTRATAS CLASSES DE INTERFACE VISIBILIDADE DE CLASSES, MÉTODOS E ATRIBUTOS Pacotes Visibilidade CLASSES ANINHADAS Classe interna Classes aninhadas Estáticas Classes aninhadas locais e anônimas DICAS DE PROGRAMAÇÃO Características desejáveis para um projeto de software TRATAMENTO DE EXCEÇÕES EM JAVA Exceção Tipos de exceção Tratar Exceções Lançar Exceções EXERCÍCIOS

4 1 OBJETO Um objeto representa uma entidade concreta (ex. produto em estoque) ou abstrata (transação bancária, histórico, taxa de juros) do mundo real. Também pode ser algo necessário ao funcionamento do sistema sem uma ligação forte com uma entidade do mundo real. Um objeto num sistema possui três propriedades: Estado: definido pelo conjunto de propriedades do objeto (os atributos) e de suas relações com os outros objetos, muda com o tempo. Ex. objeto turma pode estar aberta ou fechada passa ao estado fechada quando 10 alunos fizerem a inscrição. Comportamento: como um objeto responde às solicitações dos outros e tudo mais o que um objeto é capaz de fazer. É implementado por um conjunto de operações. Ex. objeto turma pode ter operações acrescentar aluno ou suprimir aluno. Identidade: significa que cada objeto é único no sistema. Por exemplo, o objeto turma Tecno-OO manhã é diferente do objeto Tecno-OO tarde. objeto : classe Tecno-OO manhã :Turma Tecno-OO tarde : Turma. Figura 1. Notação de objeto em UML 2 CLASSE Uma classe é uma descrição de um conjunto de objetos com propriedades, comportamento, relacionamentos e semântica comuns. Uma classe pode ser vista como um esqueleto/modelo para criar objetos. Exemplo: classe turma Atributos: sala, horário Operações: obter local, adicionar estudante, obter horário Dicas Classes devem encerrar uma só abstração do mundo real. Por exemplo, uma classe estudante contendo também o histórico do estudante não é boa. Melhor é dividi-las em duas: estudante e histórico estudante. Utilize substantivos para nomear as classes Podem-se suprimir os atributos e os métodos deixando somente os compartimentos. Em UML, classes abstratas são grafadas em itálico <<estereótipo>> Turma atributos métodos Figura 2. Notação UML para classe. 4

5 2.1 Atributos Sintaxe para declaração de um atributo em UML: [<visibilidade>]<nome>[<multiplicidade>]:[<tipo>][=<valor inicial>] <visibilidade>: + = público - = privada, somente métodos da classe podem acessá-lo # = protegido, métodos da classe e das classes derivadas podem acessá-lo ~ = pacote, métodos das classes presentes no mesmo pacote podem acessá-lo <nome>: nome do atributo <multiplicidade>: por exemplo, valores[5] ou matriz[4, 6] <tipo>: Pode-se utilizar os tipos da linguagem de implementação. Por exemplo, char, float ou int. <valor inicial>: valor inicial para o atributo que respeite o tipo de dado. Exemplos - nome[30]: char - sexo: char= f + código: int= Métodos Sintaxe para declaração de um atributo em UML: [<visibilidade>]<nome>(<lista argumentos>):[<tipo>] <visibilidade>: + público - privada, somente métodos da classe podem acessá-lo # protegido, métodos da classe e das classes derivadas podem acessá-lo ~ pacote, métodos de classes presentes no mesmo pacote podem acessá-lo <nome>: nome do método <lista de argumentos>: (<nome_argumento>:<tipo>,..., <nome_argumento><tipo>). Por exemplo, (nome:string, idade: int) <tipo>: Tipo do dado retornado. Pode-se utilizar os tipos da linguagem de implementação. Por exemplo, char, float ou int. Exemplos - calcularidadeemmeses(data data_nasc): int +moverpara(x:int, y:int):void 2.3 Encapsulamento Encapsular num só objeto atributos (dados) e operações permite esconder os detalhes internos de funcionamento do objeto. Podemos definir, por exemplo, que os atributos não são visíveis (privados) e que certos métodos os modificam. Também, podemos definir que somente alguns dos métodos dos objetos de uma classe são visíveis (métodos públicos), os demais seriam para o funcionamento interno do objeto. 5

6 2.4 Construtores São métodos especiais que servem para criar uma instância de uma classe. Pode haver vários métodos construtores variando-se os argumentos (polimorfismo por sobrecarga). Por exemplo, uma classe círculo pode oferecer três modos de instanciação: um, pelo centro e raio, por circunscrição e inscrição num quadrado cuja diagonal é uma reta de x1, y1 a x2, y2 como ilustra a figura 3. 1 import java.lang.math.*; 2 class Circulo { 3 public float xcentro; 4 public float ycentro; 5 public float raio; 6 7 // Construtora centro + raio 8 Circulo (float x, float y, float r) { 9 xcentro = x; 10 ycentro = y; 11 raio = r; 12 } 13 // Construtora para círculo inscrito num quadrado 14 // assume que abs de x2 é maior que abs de x1 15 Circulo (float x1, float y1, float x2, float y2) { 16 xcentro = (x1 + x2)/2; 17 ycentro = (y1 + y2)/2; 18 raio = Math.abs(x2 - x1)/2; 19 } // Construtora para círculo circunscrito num quadrado 22 // assume que abs de x2 é maior que abs de x1 23 Circulo (float x11, float y11, float x22, float y22) { 24 xcentro = (x11 + x22)/2; 25 ycentro = (y11 + y22)/2; 26 raio = Math.abs(x22 - x11)/2; 27 } 28 // outros métodos aqui } Figura 3: exemplo de utilização de várias construtoras. 2.5 Membros de Classe e de Instância Atributos membros de classe são comuns a todos os objetos instâncias de uma mesma classe, ou seja, um atributo estático é único para todos os objetos instâncias de uma classe. Um método estático também é um membro de classe e pode ser executado sem que haja um objeto instanciado. Por exemplo, os métodos da classe Math da API Java são todos statics (java.lang.math, Na Figura 13, observe que nas chamadas aos métodos Math.pow e Math.sqrt não há objeto instanciado. Um método estático não pode chamar um método não-estático da mesma classe. De outra forma, um método de classe não pode chamar um método de instância, pois não há objeto instanciado. Um método de classe também não pode fazer referências a atributos de instância pelo mesmo motivo. Por exemplo, na Figura 4, o compilador acusa o seguinte erro na linha 9: non-static method imprimir() cannot be referenced from static context. 30 public class ImprimirStrings { 31 String str = atributo-nao-estatico ; 32 public void imprimir() { 33 String a = new String( abcdef ); 34 String b = new String( xyz ); 35 System.out.println(a.concat(b)); 36 } 37 public static void main(string[] args) { 38 imprimir(); 39 } 40 } Figura 4. Métodos e atributos não-estáticos não podem ser referenciados em contextos estáticos. 6

7 Se fizermos referência ao atributo não-estático str no método main ou no imprimir obtermos o seguinte erro de compilação: non-static variable str cannot be referenced from static context. Podemos fazer referência a métodos e atributos não estáticos de outros objetos. Não devemos abusar de métodos estáticos porque um programa que utiliza somente métodos de classe não é orientado a objetos (não há objetos). A Figura 5 mostra um exemplo adicional de método estático e a Tabela 1 resume o vocabulário do assunto. 1 public class Circle { 2 static final double PI = ; 3 public static double calculaarea(double raio) { 4 return PI * ( raio * raio ); 5 } 6 } 7 8 // um método qualquer double circlearea = Circle.calculaArea(5); // utilizamos o nome da classe Figura 5: exemplo de método estático. TABELA 1:VOCABULÁRIO DE MÉTODOS E ATRIBUTOS ESTÁTICOS Método Atributo De classe É um método static, não necessita de objeto para ser chamado. É um atributo static, existe um só para todos os objetos da classe. De instância É um método não static, necessita de objeto para ser chamado. É um atributo static, há uma cópia para cada objeto instanciado. 2.6 Escopo de Variáveis As variáveis existem somente dentro do bloco em que foram definidas, sendo que um bloco é delimitado por chaves. Na figura 6, temos os seguintes escopos: num: atributo de instância existe em todos os métodos da classe (chaves pretas); res: atributo de instância existe em todos os métodos da classe (chaves pretas); n: argumento do método calcular; existe da linha 5 a 17 (chaves vermelhas); res: variável auxiliar declarada na linha 8; existe da linha 8 a 17 (chaves azuis); i: variável auxiliar do for; existe nas linhas 9 e 10 1 public class Fatorial { 2 private int num = 0; // último número calculado 3 private int res = 1; // último resultado obtido 4 5 public int calcular(int n) { 6 if (n == num) return res; 7 else { 8 int res = 1; 9 for (int i=n; i>0; i--) 10 res = i * res; // guarda resultado 13 this.res = res; 14 num = n; 15 return res; 16 } 17 } 18 } Figura 6: escopo de variáveis (JexemploEscopoVariaveis). Sombreamento. Quando um argumento ou uma variável de um método possui nome idêntico a um atributo (variável res na figura 6) então é preciso utilizar a palavra reservada this para fazer referência ao atributo. Isto é chamado de sombreamento ou ocultação do atributo pela variável de método. 7

8 3 HERANÇA É um mecanismo típico de OO para definir classes que compartilham definições de métodos e de atributos. Isto é feito quando classes apresentam parte do comportamento e da descrição de estado similares e parte específica. Por exemplo, num editor gráfico trabalhamos com duas formas geométricas: polígonos regulares e círculos. Polígonos e círculos têm parte do comportamento similar, podemos movê-los, redesenhá-los, calcular área e perímetro, e parte específica, polígonos podem ser rotacionados enquanto que círculos não necessitam deste comportamento. Polígonos podem ser descritos da mesma forma: número de lados, tamanho do lado, raio da circunferência inscrita (apótema) e centro do polígono. Embora os círculos tenham centro e raio, não possuem número de lados nem tamanho do lado. No exemplo em questão, temos uma classe base denominada forma geométrica. Uma classe derivada herda métodos e atributos da classe base. Portanto, as classes polígono e círculo herdam os métodos e atributos definidos na classe base. Uma classe derivada pode ser a classe base de outra, constituindo assim uma relação de hierarquia entre as classes. Por exemplo, a classe polígono pode ser base de uma classe retângulo, triângulo e outras. Esta técnica diminui os esforços de codificação assim como a quantidade de código, pois operações comuns às classes são definidas uma só vez. 1 class Ponto { 2 public double x; 3 public double y; 4 5 Ponto(double x, double y) { 6 this.x = x; 7 this.y = y; 8 } 9 public double calculardist(ponto p) { 10 return (Math.sqrt(Math.pow(p.x - x, 2.0) + Math.pow(p.y - y, 2.0))); 11 } 12 } class Circulo extends FormaGeometrica { 15 Circulo(Ponto c, double r) { 16 centro = c; 17 raio = r; 18 } 19 public double CalcularArea() { 20 return (Math.PI * Math.pow(raio, 2)); 21 } 22 public double CalcularPerimetro(){ 23 return (2 * Math.PI * raio); 24 } 25 public void Redesenhar() { 26 // não implementada 27 System.out.println("figura redesenhada"); 28 } 29 } 30 class Poligono extends FormaGeometrica { 31 public int numlados; 32 public double tamlado; 33 public double angrotacao=0; 34 Poligono(int n, double tam, Ponto c, double r) { 35 numlados = n; 36 tamlado = tam; 37 centro = c; 38 raio = r; 39 } 40 public double CalcularPerimetro() { 41 return (numlados * tamlado); 42 } 43 public double CalcularArea() { 44 return (raio * CalcularPerimetro() / 2); 45 } 46 public double Rotacionar(double incremento) { 47 angrotacao = Math.IEEEremainder(angRotacao+incremento, 360.0); 48 return angrotacao; } 8

9 51 public void Redesenhar() { 52 // não implementada 53 System.out.println("figura redesenhada"); 54 } 55 } 56 public abstract class FormaGeometrica { 57 public Ponto centro; 58 public Double raio; // para polígonos, é o raio inscrito (apótema) 59 public abstract double CalcularArea(); 60 public abstract double CalcularPerimetro(); 61 public abstract void Redesenhar(); 62 public void moverpara(ponto novocentro) { 63 centro = novocentro; 64 Redesenhar(); 65 } 66 } Figura 7: Exemplo de herança. A representação em UML do exemplo acima fica: Figura 8: representação de herança em UML polígono e círculo são classes derivadas de FormaGeométrica. Herança múltipla. Não há herança múltipla em Java (uma classe deriva de duas ou mais classes base que não sejam de interface), mas podemos simulá-la utilizando classes com o modificador interface. Construtores. Métodos construtores não são herdados pelas classes derivadas, mas um construtor de uma classe base é chamado implicitamente antes da primeira linha do construtor da classe derivada. Super. É possível chamar um método tal qual foi definido na classe base utilizando a sintaxe: super.<método>(<lista argumentos>). Se utilizar somente super(<lista argumentos>) então chama-se a construtura da classe base (esta última opção só pode ser utilizada na primeira linha de um método construtor). 3.1 POLIMORFISMO Métodos podem ser redefinidos de duas maneiras: pela mudança de seus argumentos (sobrecarga) ou por sobreposição/reescrita do corpo presevando a mesma assinatura Sobrecarga São métodos com mesmo nome, mas com assinaturas diferentes (lista de argumentos diferentes). A sobrecarga pode ocorrer numa mesma classe ou entre classe derivada e classe base. Em Java, se dois métodos tiverem mesmo nome e mesmos argumentos diferindo apenas no valor de retorno ocorre um erro de compilação. A figura 9 mostra um exemplo correto de sobrecarga (Somador) e outro incorreto 9

10 (AoQuadrado). Na classe AoQuadrado o compilador aponta que o método elevarquadrado(float) já foi definido na classe. 1 public class Somador { 2 public int somar(int a, int b) { 3 return a+b; 4 } 5 public int somar(float a, float b) { 6 return a+b; 7 } 8 } 1 public class AoQuadrado { 2 public float elevarquadrado(float a) { 3 return a*a; 4 } 5 public double elevarquadrado(float a) { 6 return (double)a*a; 7 } 8 } Figura 9: Exemplos de sobrecarga de métodos (correto e incorreto) JExemploPolimorfismoSobrecarga Sobreposição/Reescrita (override) A sobreposição ocorre quando um método de uma classe base é reescrito na classe derivada. O método reescrito tem a mesma assinatura que o método da classe base. Assinatura significa mesmo nome, mesma lista de argumentos e mesmo valor retornado. 1 class ClienteEspecial extends Cliente { 2 ClienteEspecial(double desc) { 3 desconto = desc; 4 } 5 // Sobreposição do método calculardesconto da classe base Cliente 6 public double calculardesconto(double valor) { 7 return valor * desconto; 8 } 9 } public class Cliente { 12 protected double desconto=0.1; // 10% 13 public double calculardesconto(double valor) { 14 if (valor > 500) 15 return valor * desconto; 16 else 17 return 0.0; 18 } public static void main(string args[]) { 21 Cliente cli[] = {new Cliente(), // cli[0] 22 new ClienteEspecial(0.15)}; // cli[1] for (int i=0; i < 2; i++) 25 System.out.println(cli[i].calcularDesconto(100)); 26 } 27 } Figura 10: Exemplo de sobreposição de método (JExemploPolimorfismoSobreposicao). Restrições à sobreposição. Alguns métodos não podem ser sobrepostos em função dos modificadores que recebem: final: um método final nunca muda, todas as classes derivadas utilizam a mesma implementação. As chamadas aos métodos finais são resolvidas em tempo de compilação (vinculação estática). Static: é implicitamente um método final. private: são implicitamente finais, porque não podem ser sobrescritos nas classes derivadas (embora seja possível escrever um método com mesma assinatura numa classe derivada). 10

11 3.1.3 Princípio da substituição Um objeto de uma classe derivada é tratado como se fosse objeto da classe base. Observe que no método main (figura 10) são criadas duas instâncias de cliente, um normal outro especial. As duas instâncias são colocadas num vetor da classe Cliente, i.e., o cliente especial é tratado como se fosse um objeto da classe Cliente todas as vezes em que for referenciado por meio da variável cli[1]. Late Binding (vinculação ou associação dinâmica). A pergunta que se faz é: qual o método calculardesconto será chamado para a instância armazenada em cli[1]? O método da classe Cliente ou da classe ClienteEspecial? A resposta é: o método da classe ClienteEspecial. Em tempo de execução, o tipo real do objeto armazenado na variável (cli[1]) determina o método a ser chamado. Isto é chamado de late binding, ou seja, associação dinâmica. 4 CLASSES ABSTRATAS Classe abstrata. Não admite instâncias, não pode ser instanciada. Normalmente são classes bases que contêm atributos e comportamentos comuns às classes derivadas. Método abstrato. Um método abstrato é apenas uma declaração significando que ele deverá ser implementado numa classe derivada concreta (figura 11). Se isto não for feito, a classe derivada deve ser declarada como abstrata. Não podem ser declarados como métodos abstratos: Métodos construtores: os construtores não são herdados, logo um método construtor abstrato nunca seria implementado. Métodos static: métodos static não podem ser sobrepostos pelas classes derivadas, logo um método static abstrato nunca seria implementado. 1 abstract class Veiculo { 2 public int cavalos; 3 public abstract double calcularipva(); 4 public abstract static void incrementarveiculos(); // erro: combinação ilegal 5 public abstract Veiculo(); // erro: modificador abstract não permitido 6 } 7 class Carro extends Veiculo { 8 public double calcularipva() { 9 return (cavalos * 100); 10 } 11 } Figura 11: Exemplo de método abstrato. 4.1 CLASSES DE INTERFACE Uma classe de interface define um contrato que deve ser seguido pelas classes que a implementam. Uma classe interface é uma classe abstrata onde todos os métodos são implicitamente abstratos e públicos e todos os atributos são implicitamente públicos, estáticos e finais. Dica: ao tentar colocar visibilidade private ou protected nos atributos e métodos numa classe interface o compilador acusará erro visibilidade não pemitida. A palavra-chave final pode ser associada a um método ou atributo. Se for associada a um método, indica que ele não pode ser redefinido. Se for associada a um atributo, indica que seu valor não pode ser modificado depois de ser inicializado. A inicialização de um atributo final pode ser feita na sua declaração ou num método construtor. A Figura 12 ilustra um exemplo de utilização de uma classe interface. 11

12 1 interface IPVA { 2 // definimos algumas constantes (implicitamente são static final e declaramos 3 // um método abstrado calcular IPVA 4 Boolean CARRO_PASSEIO = true, 5 CARRO_UTILITARIO = false; 6 double CTE_UTILITARIO = 0.75, 7 CTE_PASSEIO = 1.0; 8 double VALOR_BASE = ; 9 public double calcularipva(); 10 } class Carro implements IPVA { 13 Boolean tipocarro=carro_passeio; 14 String placa = new String("ABC1010"); 15 public double calcularipva() { 16 if (tipocarro==carro_passeio) 17 return VALOR_BASE * CTE_PASSEIO; 18 else 19 return VALOR_BASE * CTE_UTILITARIO; 20 } 21 } 22 class Caminhao implements IPVA { 23 String placa = new String("CCC1010"); 24 public double calcularipva() { 25 return 2 * VALOR_BASE * CTE_UTILITARIO; 26 } 27 } public class ExemplificarInterface { 30 // A classe IPVA homogeiniza a execução do método calcularipva. Aqui não 31 // sabemos se o objeto é um carro ou um caminhao, mas como ambas as classes 32 // são obrigadas a implementar o método em questão podemos chamá-lo sem 33 // conhecer a classe do objeto. 34 public static void main(string args[]) { 35 IPVA veiculos[] = {new Carro(), new Caminhao()}; 36 for (int i=0; i < veiculos.length; i++) 37 System.out.println(veiculos[i].calcularIPVA()); 38 } 39 } Figura 12 : exemplo de classe interface para definir métodos abstratos. Observe que classes do tipo interface podem ser utilizadas para definir constantes (linhas 4-9, Figura 12). Note também a aplicação do princípio da substituição na linha 35, uma instância da classe carro (classe derivada) é referenciada como sendo um objeto de IPVA (classe base). O mesmo vale para o caminhão. Runnable e Serializable são classes de interface bem conhecidas da API JAVA 5 VISIBILIDADE DE CLASSES, MÉTODOS E ATRIBUTOS Pode-se aplicar os seguintes modificadores de visibilidade a classes, métodos e atributos: público, protegido, privado e default (de pacote ou friendly). Os três primeiros devem ser definidos explicitamente e default é implícito. Nem todos podem ser aplicados indistintamente às classes, métodos e atributos. Por exemplo, o modificador protegido (protected) não é aplicável a classes. Antes de estudá-los em maior profundidade, é necessário conhecermos o conceito de pacotes. 5.1 Pacotes Servem para organizar o código, por exemplo, agrupar classes correlatas. Vamos supor uma classe ponto pertencente ao pacote formas. A classe ponto é internamente nomeada por formas.ponto. Assim se você estiver utilizando numa aplicação pacotes desenvolvidos por pessoas (empresas) diferentes, há menos risco de haver coincidência de nomes de classes. Declaração java: package formas; Se você não declarar o pacote, a classe pertence automaticamente ao pacote default que é o diretório corrente. 12

13 Para incluir um pacote num código faz-se: import formas.*; //inclui todas as classes definidas no pacote formas import formas.ponto; // inclui uma classe específica 5.2 Visibilidade Pode ser aplicada às classes, atributos e métodos. Se nada for definido pelo programador (default), as visibilidades destes elementos são restritas aos membros que fazem parte do mesmo pacote (os pacotes podem ser vistos como diretórios). A visibilidade pública modifica a visibilidade default, permitindo que todos os membros do mesmo pacote ou de outros pacotes enxerguem o que for público. Arquivo.java: pode conter somente uma classe pública que deve ter o mesmo nome que o arquivo. As demais classes (friends) de um arquivo.java possuem a visibilidade padrão (pacote). Public: todos os objetos do mesmo ou de outros pacotes podem enxergar classes, atributos ou métodos públicos. Protected: atributos protected têm visibilidade restrita à própria classe e às classes derivadas. Objetos de classes do mesmo pacote também enxergam atributos protegidos. Private: atributos e métodos private são visíveis pelas instâncias de uma mesma classe. Instâncias de uma classe derivada não conseguem acessar os atributos e métodos definidos como private na classe base. Exemplo: 1 // Testar visibilidade privada de métodos e atributos 2 3 class Ponto { // esta classe só é visível neste pacote 4 private double x; 5 private double y; 6 7 Ponto(double x, double y) { 8 this.x = x; 9 this.y = y; 10 } 11 private double obterx() { 12 return x; 13 } 14 public double calculardist(ponto p) { 15 // O objeto que executa este método pode acessar os atributos privados x e y 16 // do objeto passado como argumento, pois são instâncias da mesma classe. 17 return (Math.sqrt(Math.pow(p.x - x, 2.0) + Math.pow(p.y - y, 2.0))); 18 } 19 } 20 public class FormasGraficas { 21 public static void criarpontos() { 22 Ponto ptoa = new Ponto(2, -6); 23 Ponto ptob = new Ponto(5, -2); 24 System.out.println("distancia=" + ptoa.calculardist(ptob)); 25 // Se a linha abaixo for incluída, o erro de compilação seguinte ocorre: 26 // x has private access in Ponto 27 // System.out.println("Coordenada x:"+ptoa.x); 28 } 29 public static void main(string[] args) { 30 criarpontos(); 31 } 32 } Figura 13: Exemplo de atributo privado. Visibilidade e Herança Os membros de uma classe base quando herdados por uma classe derivada, levam consigo a visibilidade. Assim, se um atributo ou método é público na classe base também o será na derivada. O compilador acusa erro de sintaxe se tentarmos sobrescrever um método com um modificador de acesso mais restrito que o original. 13

14 Visibilidade e Construtoras Construtoras podem receber modificadores de visibilidade. Se uma construtora for definida como private então a classe deve ter um método estático público que permita criar instâncias. Exemplo: 1 // Testar visibilidade privada de métodos construtores 2 3 public class Semaforo { 4 private int estado; 5 private String[]={ vermelho, verde, amarelo }; 6 7 private Semaforo() { 8 estado = 0; 9 } 10 public static Semaforo instanciar() { 11 return (new Semaforo()); 12 } 13 } 6 CLASSES ANINHADAS Em Java, é possível codificar classes dentro de outras classes. Estas classes podem ser static ou não static. Classes não estáticas aninhadas são denominadas classes internas como ilustra a figura class Externa { class Interna { } 6 class static AninhadaEstatica { } 9 } Figura 14: classes aninhadas Restrições: Classes externas somente podem ter visibilidade de pacote (default) ou pública Classes internas são membros de classe e como tal podem ser públicas, protegidas, privadas ou de pacote. Classes aninhadas estáticas, assim como os métodos estáticos, não podem referenciar diretamente variáveis ou métodos de instância da classe externa. Uma classe estática aninhada funciona exatamente como outra qualquer não aninhada. Só é colocada dentro de outra por razões de encapsulamento. TABELA 2: COMPARAÇÃO ENTRE CLASSE ANINHADA E ANINHADA STATIC. Necessário instanciar objeto da classe externa? Classe interna tem acesso a atributos e métodos de instância da classe externa? Um objeto da classe interna tem implicitamente uma referência ao objeto da sua classe externa? Interna (não static) SIM SIM SIM Aninhada Static NÃO NÃO NÃO (não há objeto) 14

15 6.1 Classe interna A figura 15 mostra um exemplo de uma classe aninhada interna. A classe Ponto é interna à classe JLinha. Observar que dentro da classe Ponto é possível acessar o atributo idlinha (privado em JLinha) sem referência a um objeto JLinha. 1 public class JLinha { 2 private static int totlinha=0; 3 private int idlinha; 4 protected Ponto pt1; 5 protected Ponto pt2; 6 7 public JLinha(int x1, int y1, int x2, int y2) { 8 idlinha = ++totlinha; 9 pt1 = new Ponto(x1, y1); 10 pt2 = new Ponto(x2, y2); 11 } 12 public JLinha() { 13 idlinha = ++totlinha; 14 } public class Ponto { 17 protected int x; 18 protected int y; protected Ponto(int x, int y) { 21 this.x = x; 22 this.y = y; 23 } 24 protected String pontostr() { 25 return "(" + x + ", " + y + ")"; 26 } protected String pontostrcomid(){ 29 return "Linha " + idlinha + " " + pontostr(); 30 } 31 } 32 } Figura 15: Exemplo de classe aninhada interna: Ponto. A figura 16 mostra duas formas de se instanciar uma classe interna. Na primeira, a construtora da classe externa realiza a instanciação da classe interna. Na segunda forma, a instanciação é feita fora da classe externa. Observar que a chamada de new está atrelada a existência de um objeto da classe Linha armazenado em l2 já que um objeto de uma classe interna existe somente associado a uma instância da classe externa. 1 public class JMain { 2 public static void main(string args[]) { 3 // duas formas de instanciar pontos 4 5 // Forma 1: a construtora de linha instancia dois pontos 6 JLinha l1 = new JLinha(5, 15, 7, 17); 7 8 System.out.println(l1.pt1.pontoStr() + " " + l1.pt2.pontostr()); 9 10 // Forma 2: instancia-se linha e depois os pontos 11 JLinha l2 = new JLinha(); 12 JLinha.Ponto p1 = l2.new Ponto(10, 10); 13 JLinha.Ponto p2 = l2.new Ponto(20, 20); 14 l2.pt1 = p1; 15 l2.pt2 = p2; 16 System.out.println(l2.pt1.pontoStrComId() + " " + l2.pt2.pontostrcomid()); 17 } 18 } Figura 16: Exemplo de utilização de classe aninhada interna. Uma aplicação típica de classes internas é a navegação por iterator (classe interna) em um conjunto de objetos ou de tipos primitivos armazenados em um array na classe externa. Um exemplo disso pode ser visto em 15

16 6.2 Classes aninhadas Estáticas Classes aninhadas estáticas podem ser bastante úteis para testes. O exemplo seguinte ilustra esta aplicação para testes de limites de uma classe que simula o funcionamento de um radar de velocidade. O radar aplica multas para velocidades superiores a 10% da velocidade máxima para a qual foi configurado. Após compilar o código da figura 17, são geradas os arquivos JRadar.classe e JRadar$TesteJRadar. 1 // JAVARepositorio\JRevisaoOO\JExemClasseAninhadaEstaticaRadar 2 // Este programa demonstra como utilizar uma classe aninhada 3 // estatica para testar uma classe. Depois da fase de testes 4 // a classe aninhada pode ser desprezada. 5 // Para executar fazer: java -cp. JRadar$TesteJRadar 6 7 public class JRadar { 8 private int velocidademaxima; 9 10 public JRadar(int v) { 11 velocidademaxima = v; 12 } 13 public Boolean multar(int v) { 14 // multar return true qdo a velocidade detectada pelo 15 // radar excede em 10% a velocidade maxima; 16 if (v > (velocidademaxima * 1.1)) 17 return true; 18 else 19 return false; 20 } public static class TesteJRadar{ 23 public static void main(string args[]) { 24 JRadar r[] = {new JRadar(40), new JRadar(60), new JRadar(110)}; 25 int v[] = {44, 67, 110}; 26 Boolean res[]={false, true, false}; for (int i=0; i < r.length; i++) { 29 if (r[i].multar(v[i]) == res[i]) 30 System.out.println("OK"); 31 else 32 System.out.println("ERRO: radar " + i); 33 } 34 } 35 } 36 } Figura 17: Exemplo de classe aninhada estática. 6.3 Classes aninhadas locais e anônimas Há outros dois tipos de classes aninhadas: Local: criada no corpo de um método Anônima: criada no corpo de um método sem nome de classe, bastante utilizada em tratamento de eventos de interface gráfica. A forma de instanciação é ligeiramente diferente. Observar na figura 18, linha 3, a instanciação de uma classe anônima que implementa a classe interface ActionListener. Uma classe anônima deve estender ou (exclusivo) implementar uma e somente uma classe. 1 Button b = new Button("Ok"); 2 b.addactionlistener( 3 new ActionListener() { 4 public void actionperformed(actionevent e) { 5 tratarok(); 6 } 7 } 8 ); Figura 18: Exemplo de classe interna anônima. 16

17 7 DICAS DE PROGRAMAÇÃO Planejar. Antes de começar a programar fazer um pseudo-código ou fluxograma. Vantagens: Ajuda a detectar defeitos antes da codificação (economiza tempo) Aumenta a confiabilidade do software Desvantagens Cria mais documentação que deverá ser mantida Podem exigir ferramentas adicionais, por exemplo, para desenhar fluxogramas Erros podem ser introduzidos no momento da tradução do pseudo-código/fluxograma para o programa Tratar exceções. Verificar se os parâmetros de entrada condizem ao esperado. Usar nomes expressivos nas variáveis e métodos. Exemplo: manipular (int num) //não diz nada obternumeroalunosdaturma (int num) //é melhor Dê nome aos números Ex: for (int i=0; i < 54; i++) melhor fazer for (int i=0; i < TAM_TURMA; i++) Evitar variáveis globais: preferir métodos com parâmetros sempre que possível. Inicializar as variáveis Declarar as variáveis perto de sua primeira utilização Notação Classes: iniciam com letras maiúsculas: Aluno, VeiculoMotor Métodos: iniciam com letras minúsculas: obternumeroalunos() Atributos: numchassis Variáveis de métodos: em minúsculas ou idem aos atributos Dicas de programação Evitar utilizar parâmetros dos métodos como variáveis do método Limitar o número de parâmetros dos métodos (até 6, máximo 7) Evitar aninhamentos (loops) com mais de 3 níveis Verificar contadores de laço (principalmente os limites) Assegurar que os loops terminam 7.1 Características desejáveis para um projeto de software Correção: o software satisfaz aos requisitos da aplicação? Levar em conta que os requisitos variam ao longo do projeto impondo a necessidade de um projeto flexível. Robustez: o projeto ou a implementação são robustos quando capazes de tratarem situações incomuns ou de erro. Flexibilidade: tirar mais ou menos do que já foi implementado (por exemplo, uma calculadora que só faz uma operação por vez, é possível fazer várias operações). Adicionar novas funcionalidades e alterar funcionalidades Eficiência: tempo de execução e utilização de recursos (processador, memória, armazenamento). 17

18 Confiabilidade: tempo médio entre falhas (sistema já está em produção) Usabilidade: facilidade de uso 8 TRATAMENTO DE EXCEÇÕES EM JAVA Este capítulo é um resumo do tutorial da Sun 1 que apresenta dois tipos de exceção: não verificadas e verificadas. 8.1 Exceção É um evento anormal que ocorre durante a execução do programa interrompendo o fluxo normal de execução. Quando uma exceção ocorre, um objeto denominado exception object, contendo informações sobre o erro é criado. Throwing an exception: significa que um método lança uma exceção criando um exception object que deverá ser processado pelo JRE (Java Runtime Environment). Processado significa passar a exceção a alguém que saiba o que fazer com ela, ou seja, passá-la a um exception handler. Um exception handler só saberá tratar o exception object se tiver uma cláusula catch ( pegar a exceção que foi lançada ) que trata o tipo da exceção em questão. 8.2 Tipos de exceção Há dois tipos de exceção: não verificadas e verificadas. Exceções não verificadas (nonchecked exceptions). São exceções que não necessitam serem capturadas (catch) pelos métodos. Este tipo de exceção ocorre internamente ao JRE, tais como: exceções aritméticas (divisão por zero), ponteiros nulos e estouro de índice de vetores/matrizes. 1 public class JExcecoes { 2 public static void gravararqtexto(string nomearquivo) { 3 PrintWriter saida = new PrintWriter(new FileWriter(nomeArquivo)); 4 saida.println("eu sou o arquivo " + nomearquivo); 5 saida.close(); 6 } 7 public static double dividir(double x, double y) { 8 // Exemplifica exceção não verificada, não precisa ser "caught" 9 // São exceções internas ao java runtime. 10 // Em caso de divisão por zero, retorna Infinity 11 return x/y; 12 } public static double extrairraizquadrada(double x) { 15 // Se x for negativo, retorna NaN (not a number) 16 return Math.sqrt(x); 17 } 18 public static void main(string[] args) { 19 System.out.println(dividir(5, 0)); 20 System.out.println(extrairRaizQuadrada(-1)) 21 } 22 } Figura 19. Os métodos dividir e extrairraizquadrada podem gerar exceções não verificadas em tempo de compilação. Exceções verificadas (checked exceptions). São exceções que devem ser tratadas e o tratamento é exigido pelo compilador. São exceções que ocorrem externamente ao JRE, por exemplo, aquelas que ocorrem durante operações de E/S. Na Figura 19, em gravararqtexto, o método construtor FileWriter lança (pode lançar) uma exceção que deve ser obrigatoriamente tratada. Assim, o compilador acusa o seguinte erro:

19 8.3 Tratar Exceções Antes de qualquer coisa é preciso saber qual o tipo de exceção gerada para poder tratá-la. Por exemplo, o método construtor FileWriter lança uma exceção IOException. Para saber, basta consultar a documentação do método em A figura seguinte reproduz a documentação Java: Constructor Detail FileWriter public FileWriter(String filename) throws IOException Constructs a FileWriter object given a file name. Parameters: filename - String The system-dependent filename. Throws: IOException - if the named file exists but is a directory rather than a regular file, does not exist but cannot be created, or cannot be opened for any other reason Figura 20 : Exceção lançada pelo construtor de FileWriter. Para tratar uma exceção é preciso cercá-la utilizando o try e pegá-la utilizando o comando catch. Cada bloco catch é denominado exception handler. Podemos associar mais de um catch a um try. O código mostrado na Figura 19 não passa na compilação. Para corrigi-lo é preciso substituir o método gravararqtexto pelo código mostrado na Figura 20. public static void gravararqtexto(string nomearquivo) { PrintWriter saida = null; try { saida = new PrintWriter(new FileWriter(nomeArquivo)); saida.println("eu sou o arquivo " + nomearquivo); } catch (IOException e) { System.out.println("Erro na criação do objeto FileWriter: "+ nomearquivo+e.getmessage()); } finally { if (saida!= null) { System.out.println(nomeArquivo + " sera fechado"); saida.close(); } else System.out.println(nomeArquivo + " nao foi aberto"); } } Figura 21 : Blocos try, catch e finally. Observe que o bloco finally sempre é executado independentemente do bloco try ser executado até o final ou abortar no meio. 8.4 Lançar Exceções Códigos que lançam exceções podem criar objetos descendentes da classe Throwable através do comando throws. No código abaixo, o método pop lança a exceção pilha vazia. 19

20 23 public Object pop() throws EmptyStackException { 1 Object obj; 2 3 if (size == 0) { 4 throw new EmptyStackException(); 5 } 6 7 obj = objectat(size - 1); 8 setobjectat(size - 1, null); 9 size--; 10 return obj; 11 } Figura 22. Exemplo de lançamento de exceção. java.lang.object java.lang.throwable java.lang.exception java.lang.runtimeexception java.util.emptystackexception Figura 23. Classe de um objeto de erro deve ser descendente da Throwable. Um método pode lançar suas próprias exceções, como no exemplo da figura 22, ou lançar exceções que foram lançadas por outros métodos que não foram tratadas no método em questão. Até o método main pode lançar exceções geradas por outros métodos para o JRE. 20

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

15-09-2009. Membros de classe e de instância. PARTE III: Java e OO - detalhes. Exemplo 1: método. Exercício. Exemplo 1 corrigido PARTE III: Java e OO - detalhes Membros de classe e instâncias Pacotes Visibilidade Classes aninhadas Membros de classe e de instância De classe Static Método não necessita de objeto para ser chamado.

Leia mais

Orientação a Objetos

Orientação a Objetos 1. Domínio e Aplicação Orientação a Objetos Um domínio é composto pelas entidades, informações e processos relacionados a um determinado contexto. Uma aplicação pode ser desenvolvida para automatizar ou

Leia mais

PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br ROTEIRO 5. Tratamento de Exceções Introdução e conceitos Capturando exceção usando

Leia mais

Reuso com Herança a e Composiçã

Reuso com Herança a e Composiçã Java 2 Standard Edition Reuso com Herança a e Composiçã ção Helder da Rocha www.argonavis.com.br 1 Como aumentar as chances de reuso Separar as partes que podem mudar das partes que não mudam. Exemplo:

Leia mais

Orientação a Objetos com Java

Orientação a Objetos com Java Orientação a Objetos com Java Julio Cesar Nardi julionardi@yahoo.com.br 2011/2 Apresentação 3: Orientação Objetos: Conceitos Básicos Objetivos: Compreender os Conceitos Básicos da Orientação a Objetos;

Leia mais

Java 2 Standard Edition Como criar classes e objetos

Java 2 Standard Edition Como criar classes e objetos Java 2 Standard Edition Como criar classes e objetos Helder da Rocha www.argonavis.com.br 1 Assuntos abordados Este módulo explora detalhes da construção de classes e objetos Construtores Implicações da

Leia mais

ATRIBUTOS PRIVADOS 6. ENCAPSULAMENTO MÉTODOS PRIVADOS MÉTODOS PRIVADOS

ATRIBUTOS PRIVADOS 6. ENCAPSULAMENTO MÉTODOS PRIVADOS MÉTODOS PRIVADOS ATRIBUTOS PRIVADOS Podemos usar o modificador private, para tornar um atributo privado, obtendo um controle centralizado Definimos métodos para implementar todas as lógicas que utilizam ou modificam o

Leia mais

Especialização em desenvolvimento para web com interfaces ricas. Tratamento de exceções em Java Prof. Fabrízzio A. A. M. N. Soares

Especialização em desenvolvimento para web com interfaces ricas. Tratamento de exceções em Java Prof. Fabrízzio A. A. M. N. Soares Especialização em desenvolvimento para web com interfaces ricas Tratamento de exceções em Java Prof. Fabrízzio A. A. M. N. Soares Objetivos Conceito de exceções Tratar exceções pelo uso de try, catch e

Leia mais

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

Lista de Contas: Assinatura. Lista de Contas. Listas de Contas: Descrição. Listas de Contas: Descrição. Listas de Contas: Descrição Lista de Contas Lista de Contas: Assinatura null Quais são os métodos necessários? class ListaDeContas { void inserir (Conta c) { void retirar (Conta c) { Conta procurar (String num) { Listas de Contas:

Leia mais

Programação por Objectos. Java

Programação por Objectos. Java Programação por Objectos Java Parte 6: Herança e Polimorfismo LEEC@IST Java 1/52 Herança revisão A herança é um mecanismo em que a subclasse constitui uma especialização da superclasse. A superclasse pode

Leia mais

Programação Orientada a Objetos em java. Polimorfismo

Programação Orientada a Objetos em java. Polimorfismo Programação Orientada a Objetos em java Polimorfismo Polimorfismo Uma característica muito importante em sistemas orientados a objetos Termo proveniente do grego, e significa muitas formas Em POO, significa

Leia mais

Java. Marcio de Carvalho Victorino www.dominandoti.eng.br

Java. Marcio de Carvalho Victorino www.dominandoti.eng.br Java Marcio de Carvalho Victorino www.dominandoti.eng.br 3. Considere as instruções Java abaixo: int cont1 = 3; int cont2 = 2; int cont3 = 1; cont1 += cont3++; cont1 -= --cont2; cont3 = cont2++; Após a

Leia mais

Curso Adonai QUESTÕES Disciplina Linguagem JAVA

Curso Adonai QUESTÕES Disciplina Linguagem JAVA 1) Qual será o valor da string c, caso o programa rode com a seguinte linha de comando? > java Teste um dois tres public class Teste { public static void main(string[] args) { String a = args[0]; String

Leia mais

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

Capítulo 14. Herança a e Polimorfismo. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra Capítulo 14 Herança a e Polimorfismo Objetivos do Capítulo Apresentar os conceitos de herança e de polimorfismo. Explorar os diversos recursos disponíveis no Java para a aplicação da herança e do polimorfismo

Leia mais

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

Programação Orientada a Objetos em Java. Herança Universidade Federal do Amazonas Departamento de Ciência da Computação IEC481 Projeto de Programas Programação Orientada a Objetos em Java Herança Professor: César Melo Slides baseados em materiais preparados

Leia mais

NetBeans. Conhecendo um pouco da IDE

NetBeans. Conhecendo um pouco da IDE NetBeans Conhecendo um pouco da IDE Professor: Edwar Saliba Júnior Sumário Apresentação:...1 Criando Um Novo Projeto de Software:...1 Depurando Um Código-fonte:...4 Entendendo o Código-fonte:...7 Dica

Leia mais

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

Prova de Java. 1) Copie o programa abaixo no eclipse e complete-o, utilizando os conceitos aprendidos durante o curso. (4 pontos) Prova de Java 1) Copie o programa abaixo no eclipse e complete-o, utilizando os conceitos aprendidos durante o curso. (4 pontos) O programa consiste em uma aplicação que simula o comportamento de dois

Leia mais

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

POO Programação Orientada a Objetos. Classes em Java + POO Programação Orientada a Objetos Classes em Java + Classes 2 Para que a JVM crie objetos: Ela precisa saber qual classe o objeto pertence Na classe estão definidos os atributos e métodos Programamos

Leia mais

Java Básico. Classes Abstratas, Exceções e Interfaces Prof. Fernando Vanini Ic-Unicamp

Java Básico. Classes Abstratas, Exceções e Interfaces Prof. Fernando Vanini Ic-Unicamp Java Básico Classes Abstratas, Exceções e Interfaces Prof. Fernando Vanini Ic-Unicamp Classes Abstratas construção de uma classe abstrata construção de classes derivadas Classes e Herança Uma classe define

Leia mais

Projeto de Software Orientado a Objeto

Projeto de Software Orientado a Objeto Projeto de Software Orientado a Objeto Ciclo de Vida de Produto de Software (PLC) Analisando um problema e modelando uma solução Prof. Gilberto B. Oliveira Estágios do Ciclo de Vida de Produto de Software

Leia mais

8 Classes Internas. Desenvolvimento OO com Java. Vítor E. Silva Souza (vitorsouza@inf.ufes.br) http://www.inf.ufes.

8 Classes Internas. Desenvolvimento OO com Java. Vítor E. Silva Souza (vitorsouza@inf.ufes.br) http://www.inf.ufes. Desenvolvimento OO com Java 8 Classes Internas Vítor E. Silva Souza (vitorsouza@inf.ufes.br) http://www.inf.ufes.br/ ~ vitorsouza Departamento de Informática Centro Tecnológico Universidade Federal do

Leia mais

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS

EXERCÍCIOS SOBRE ORIENTAÇÃO A OBJETOS Campus Cachoeiro de Itapemirim Curso Técnico em Informática Disciplina: Análise e Projeto de Sistemas Professor: Rafael Vargas Mesquita Este exercício deve ser manuscrito e entregue na próxima aula; Valor

Leia mais

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

2ª LISTA DE EXERCÍCIOS CLASSES E JAVA Disciplina: PC-II. public double getgeracaoatual() {return geracaoatual;} 2ª LISTA DE EXERCÍCIOS CLASSES E JAVA Disciplina: PC-II Exercício : Construtores são métodos especiais sem tipo de retorno (nem mesmo void) e de mesmo nome que a classe que são invocados quando da criação

Leia mais

Herança. Alberto Costa Neto DComp - UFS

Herança. Alberto Costa Neto DComp - UFS Herança Alberto Costa Neto DComp - UFS 1 Motivação Vimos como se faz encapsulamento e a importância de fazê-lo... Contudo, também é possível fazer encapsulamento em algumas linguagens não OO O que mais

Leia mais

Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP

Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP Programação Orientada a Objetos Prof. Rone Ilídio UFSJ/CAP 1) Introdução Programação Orientada a Objetos é um paradigma de programação bastante antigo. Entretanto somente nos últimos anos foi aceito realmente

Leia mais

DEFINIÇÃO DE MÉTODOS

DEFINIÇÃO DE MÉTODOS Cursos: Análise, Ciência da Computação e Sistemas de Informação Programação I - Prof. Aníbal Notas de aula 2 DEFINIÇÃO DE MÉTODOS Todo o processamento que um programa Java faz está definido dentro dos

Leia mais

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

Introdução à Programação. Interface, Polimorfismo e Dynamic Binding Introdução à Programação Interface, Polimorfismo e Dynamic Binding Interface Programador Java PLENO Possuir sólida experiência em programação Desenvolvimento na linguagem JAVA Webservice, Struts ou JSF(desejável)

Leia mais

Técnicas de Programação II

Técnicas de Programação II Técnicas de Programação II Aula 06 Orientação a Objetos e Classes Edirlei Soares de Lima Orientação a Objetos O ser humano se relaciona com o mundo através do conceito de objetos.

Leia mais

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

Aula 2. Objetivos. Encapsulamento na linguagem Java; Utilizando a referência this. Aula 2 Objetivos Encapsulamento na linguagem Java; Utilizando a referência this. Encapsulamento, data hiding é um conceito bastante importante em orientação a objetos. É utilizado para restringir o acesso

Leia mais

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

Linguagem de Programação JAVA. Técnico em Informática Professora Michelle Nery Linguagem de Programação JAVA Técnico em Informática Professora Michelle Nery Agenda Regras paravariáveis Identificadores Válidos Convenção de Nomenclatura Palavras-chaves em Java Tipos de Variáveis em

Leia mais

Análise e Projeto Orientados por Objetos

Análise e Projeto Orientados por Objetos Análise e Projeto Orientados por Objetos Aula 01 Orientação a Objetos Edirlei Soares de Lima Paradigmas de Programação Um paradigma de programação consiste na filosofia adotada na

Leia mais

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

Desenvolvimento OO com Java Orientação a objetos básica Desenvolvimento OO com Java Orientação a objetos básica Vítor E. Silva Souza (vitor.souza@ufes.br) http://www.inf.ufes.br/~vitorsouza Departamento de Informática Centro Tecnológico Universidade Federal

Leia mais

Programação com Objectos. Processamento de Dados I. 4. Classes Abstractas

Programação com Objectos. Processamento de Dados I. 4. Classes Abstractas Programação com Objectos Processamento de Dados I 4. Classes Abstractas 1 Conceito de classe abstracta Declaração de uma classe abstracta Implicações e características das classes abstractas Utilização

Leia mais

Exercício 1 : As classes abaixo serão utilizadas neste exercício: public class Ponto { int x; int y; public Ponto(int x, int y){ this.

Exercício 1 : As classes abaixo serão utilizadas neste exercício: public class Ponto { int x; int y; public Ponto(int x, int y){ this. Exercício 1 : As classes abaixo serão utilizadas neste exercício: public class Ponto { int x; int y; public Ponto(int x, int y){ this.x = x; this.y = y; public String tostring(){ return "(" + x + "," +

Leia mais

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

3 Classes e instanciação de objectos (em Java) 3 Classes e instanciação de objectos (em Java) Suponhamos que queremos criar uma classe que especifique a estrutura e o comportamento de objectos do tipo Contador. As instâncias da classe Contador devem

Leia mais

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008

Tabela de Símbolos. Análise Semântica A Tabela de Símbolos. Principais Operações. Estrutura da Tabela de Símbolos. Declarações 11/6/2008 Tabela de Símbolos Análise Semântica A Tabela de Símbolos Fabiano Baldo Após a árvore de derivação, a tabela de símbolos é o principal atributo herdado em um compilador. É possível, mas não necessário,

Leia mais

Exercícios de Revisão Java Básico

Exercícios de Revisão Java Básico Exercícios de Revisão Java Básico (i) Programação básica (estruturada) 1) Faça um programa para calcular o valor das seguintes expressões: S 1 = 1 1 3 2 5 3 7 99... 4 50 S 2 = 21 50 22 49 23 48...250 1

Leia mais

Polimorfismo. Prof. Leonardo Barreto Campos 1

Polimorfismo. Prof. Leonardo Barreto Campos 1 Polimorfismo Prof. Leonardo Barreto Campos 1 Sumário Introdução; Polimorfismo; Polimorfismo Java; Métodos Abstratos Java Classes Abstratas Java Exercício - Java Polimorfismo C++ Classe Abstrata C++; Funções

Leia mais

O que é uma Exceção? Call Stack. Java Tratamento de Exceção. de métodos que foram usados até chegar na presente instrução.

O que é uma Exceção? Call Stack. Java Tratamento de Exceção. de métodos que foram usados até chegar na presente instrução. Java Tratamento de Exceção O que é uma Exceção? n Uma exceção é um evento que ocorre durante a execução do programa que interrompe o fluxo normal de instruções. n Quando um erro acontece em um método,

Leia mais

2 Orientação a objetos na prática

2 Orientação a objetos na prática 2 Orientação a objetos na prática Aula 04 Sumário Capítulo 1 Introdução e conceitos básicos 1.4 Orientação a Objetos 1.4.1 Classe 1.4.2 Objetos 1.4.3 Métodos e atributos 1.4.4 Encapsulamento 1.4.5 Métodos

Leia mais

Capítulo 5 Reuso de Classes

Capítulo 5 Reuso de Classes Java and all Java-based marks are trademarks or registered trademarks of Sun Microsystems, Inc. in the U.S. and other countries. Desenvolvimento Orientado a Objetos com Java Capítulo 5 Reuso de Classes

Leia mais

Guia de Fatores de Qualidade de OO e Java

Guia de Fatores de Qualidade de OO e Java Qualiti Software Processes Guia de Fatores de Qualidade de OO e Java Versã o 1.0 Este documento só pode ser utilizado para fins educacionais, no Centro de Informática da Universidade Federal de Pernambuco.

Leia mais

Programação Orientada a Objetos em Java

Programação Orientada a Objetos em Java Programação Orientada a Objetos em Java Rone Ilídio da Silva Universidade Federal de São João del-rei Campus Alto Paraopeba 1:14 1 Objetivo Apresentar os principais conceitos de Programção Orientada a

Leia mais

Linguagem de Programação III

Linguagem de Programação III Linguagem de Programação III Aula-3 Criando Classes em Java Prof. Esbel Tomás Valero Orellana Da Aula Anterior Classes em Java, sintaxe básica Tipos básicos de dados em Java, como escolher o tipo apropriado

Leia mais

Unidade IV: Ponteiros, Referências e Arrays

Unidade IV: Ponteiros, Referências e Arrays Programação com OO Acesso em Java a BD Curso: Técnico em Informática Campus: Ipanguaçu José Maria Monteiro Pontifícia Universidade Católica do Rio de Janeiro PUC-Rio Departamento Clayton Maciel de Informática

Leia mais

Noções sobre Objetos e Classes

Noções sobre Objetos e Classes Noções sobre Objetos e Classes Prof. Marcelo Cohen 1. Elementos de programação Revisão de programação variáveis, tipos de dados expressões e operadores cadeias de caracteres escopo de variáveis Revisão

Leia mais

Capítulo 4. Packages e interfaces

Capítulo 4. Packages e interfaces Capítulo 4. Packages e interfaces 1/17 Índice Indice 4.1 - Package 4.2 - Interface 2/17 Índice 4.1 Package 4.1 - Package 4.2 -- Interface 3/17 4.1 Package Package ou pacote está para o Java como as directorias

Leia mais

Introdução a Java. Hélder Nunes

Introdução a Java. Hélder Nunes Introdução a Java Hélder Nunes 2 Exercício de Fixação Os 4 elementos básicos da OO são os objetos, as classes, os atributos e os métodos. A orientação a objetos consiste em considerar os sistemas computacionais

Leia mais

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

CONCEITOS DE LINGUAGEM DE PROGRAMAÇÃO CARACTERÍSTICAS. João Gabriel Ganem Barbosa CONCEITOS DE LINGUAGEM DE PROGRAMAÇÃO CARACTERÍSTICAS João Gabriel Ganem Barbosa Sumário Motivação História Linha do Tempo Divisão Conceitos Paradigmas Geração Tipos de Dados Operadores Estruturada vs

Leia mais

Aplicações, durante a execução, podem incorrer em muitas espécies de erros de vários graus de severidade Quando métodos são invocados sobre um objeto:

Aplicações, durante a execução, podem incorrer em muitas espécies de erros de vários graus de severidade Quando métodos são invocados sobre um objeto: Tratamento de Exceções Prof. Bruno Gomes bruno.gomes@ifrn.edu.br Programação Orientada a Objetos Exceções Aplicações, durante a execução, podem incorrer em muitas espécies de erros de vários graus de severidade

Leia mais

Programação por Objectos. Java

Programação por Objectos. Java 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:

Leia mais

1.6. Tratamento de Exceções

1.6. Tratamento de Exceções Paradigmas de Linguagens I 1 1.6. Tratamento de Exceções Uma exceção denota um comportamento anormal, indesejado, que ocorre raramente e requer alguma ação imediata em uma parte do programa [GHE 97, DER

Leia mais

Para desenvolver a atividade a atividade desta aula utilizaremos o ambiente de desenvolvimento integrado NetBeans.

Para desenvolver a atividade a atividade desta aula utilizaremos o ambiente de desenvolvimento integrado NetBeans. 1 - Criando uma classe em Java Para desenvolver a atividade a atividade desta aula utilizaremos o ambiente de desenvolvimento integrado NetBeans. Antes de criarmos a(s) classe(s) é necessário criar o projeto

Leia mais

Algoritmos e Programação II. Sobrecarga

Algoritmos e Programação II. Sobrecarga Algoritmos e Programação II Baseado no Material do Prof. Júlio Machado Sobrecarga Em várias linguagens é comum encontrarmos rotinas que fazem basicamente a mesma coisa, porém, têm nomes distintos porque

Leia mais

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES

CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES CAPÍTULO 3 - TIPOS DE DADOS E IDENTIFICADORES 3.1 - IDENTIFICADORES Os objetos que usamos no nosso algoritmo são uma representação simbólica de um valor de dado. Assim, quando executamos a seguinte instrução:

Leia mais

Aula 09 Introdução à Java. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes http://www.profbrunogomes.com.br/

Aula 09 Introdução à Java. Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes http://www.profbrunogomes.com.br/ Aula 09 Introdução à Java Disciplina: Fundamentos de Lógica e Algoritmos Prof. Bruno Gomes http://www.profbrunogomes.com.br/ Agenda da Aula Java: Sintaxe; Tipos de Dados; Variáveis; Impressão de Dados.

Leia mais

Introdução a POO. Introdução a Linguagem C++ e POO

Introdução a POO. Introdução a Linguagem C++ e POO Introdução a POO Marcio Santi Linguagem C++ Introdução a Linguagem C++ e POO Programação Orientada a Objetos (POO) e C++ Recursos C++ não relacionados às classes Incompatibilidades entre C e C++ Classes

Leia mais

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

Módulo 07 Características Avançadas de Classes Módulo 07 Características Avançadas de Classes Última Atualização: 15/06/2010 1 Objetivos Descrever variáveis, métodos e iniciadores static Descrever a semântica do modificador final em classes, métodos

Leia mais

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

Curso de PHP. FATEC - Jundiaí. A programação orientada a objetos (object-oriented oriented programming Curso de PHP FATEC - Jundiaí A programação orientada a objetos (object-oriented oriented programming OOP) é um conjunto de técnicas t para organizar o código c em torno de entidades ou objetos representados

Leia mais

Desenvolvimento Web TCC-00.226 Turma A-1 / 2013.2

Desenvolvimento Web TCC-00.226 Turma A-1 / 2013.2 1 Desenvolvimento Web TCC-00.226 Turma A-1 / 2013.2 Professor Leandro A. F. Fernandes Instituto de Computação Universidade Federal Fluminense Lista de Exercícios 02 Orientação a Objetos 1) Identifique

Leia mais

2. OPERADORES... 6 3. ALGORITMOS, FLUXOGRAMAS E PROGRAMAS... 8 4. FUNÇÕES... 10

2. OPERADORES... 6 3. ALGORITMOS, FLUXOGRAMAS E PROGRAMAS... 8 4. FUNÇÕES... 10 1. TIPOS DE DADOS... 3 1.1 DEFINIÇÃO DE DADOS... 3 1.2 - DEFINIÇÃO DE VARIÁVEIS... 3 1.3 - VARIÁVEIS EM C... 3 1.3.1. NOME DAS VARIÁVEIS... 3 1.3.2 - TIPOS BÁSICOS... 3 1.3.3 DECLARAÇÃO DE VARIÁVEIS...

Leia mais

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

insfcanceof new public switch transient while byte continue extends for int null Palavras -chave de JAV A abstract catch do final implements long private static throw void boolean char double finally import native protected super throws volatile break class float insfcanceof new public

Leia mais

ARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo.

ARRAYS. Um array é um OBJETO que referencia (aponta) mais de um objeto ou armazena mais de um dado primitivo. Cursos: Análise, Ciência da Computação e Sistemas de Informação Programação I - Prof. Aníbal Notas de aula 8 ARRAYS Introdução Até agora, utilizamos variáveis individuais. Significa que uma variável objeto

Leia mais

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

Relacionamentos entre objetos. Relacionamentos entre objetos. Relacionamentos entre objetos. Relacionamentos entre objetos Programação Orientada a Objetos Relacionamentos entre objetos Associação, composição e agregação Construtores e sobrecarga Variáveis de classe e de instância Reinaldo Gomes reinaldo@cefet-al.br Objetos

Leia mais

Programação Orientada a Objetos. Encapsulamento

Programação Orientada a Objetos. Encapsulamento Programação Orientada a Objetos Encapsulamento de Dados Ocultação de dados Garante a transparência de utilização dos componentes do software, facilitando: Entendimento Reuso Manutenção Minimiza as interdependências

Leia mais

UML Aspectos de projetos em Diagramas de classes

UML Aspectos de projetos em Diagramas de classes UML Aspectos de projetos em Diagramas de classes Após ser definido o contexto da aplicação a ser gerada. Devemos pensar em detalhar o Diagrama de Classes com informações visando uma implementação Orientada

Leia mais

Diagrama de Classes. Um diagrama de classes descreve a visão estática do sistema em termos de classes e relacionamentos entre as classes.

Diagrama de Classes. Um diagrama de classes descreve a visão estática do sistema em termos de classes e relacionamentos entre as classes. 1 Diagrama de Classes Um diagrama de classes descreve a visão estática do sistema em termos de classes e relacionamentos entre as classes. Um dos objetivos do diagrama de classes é definir a base para

Leia mais

A Linguagem Java. Alberto Costa Neto DComp - UFS

A Linguagem Java. Alberto Costa Neto DComp - UFS A Linguagem Java Alberto Costa Neto DComp - UFS 1 Roteiro Comentários Variáveis Tipos Primitivos de Dados Casting Comandos de Entrada e Saída Operadores Constantes 2 Comentários /** Classe para impressão

Leia mais

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

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 PPROG Paradigmas da Programação Linguagem JAVA Interfaces (Livro Big Java, Late Objects Capítulo 9) Nelson Freire (ISEP DEI-PPROG 2013/14) 1/33 PPROG Motivação para usar Interfaces Definição de Interface

Leia mais

Algoritmos I Aula 13 Java: Tipos básicos, variáveis, atribuições e expressões

Algoritmos I Aula 13 Java: Tipos básicos, variáveis, atribuições e expressões Algoritmos I Aula 13 Java: Tipos básicos, variáveis, atribuições e expressões Professor: Max Pereira http://paginas.unisul.br/max.pereira Ciência da Computação Primeiro Programa em Java public class OlaPessoal

Leia mais

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

Programação de Computadores - I. Profª Beatriz Profº Israel Programação de Computadores - I Profª Beatriz Profº Israel Ambiente de Desenvolvimento Orientação a Objetos É uma técnica de desenvolvimento de softwares que consiste em representar os elementos do mundo

Leia mais

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

Programação de Computadores - I. Profª Beatriz Profº Israel Programação de Computadores - I Profª Beatriz Profº Israel As 52 Palavras Reservadas O que são palavras reservadas São palavras que já existem na linguagem Java, e tem sua função já definida. NÃO podem

Leia mais

NOVIDADES DO JAVA PARA PROGRAMADORES C

NOVIDADES DO JAVA PARA PROGRAMADORES C PROGRAMAÇÃO SERVIDOR EM SISTEMAS WEB NOVIDADES DO JAVA PARA PROGRAMADORES C Prof. Dr. Daniel Caetano 2012-1 Objetivos Apresentar o Conceito de Classes e Objetos Capacitar para a criação de objetos simples

Leia mais

7 RTTI e Interfaces. Desenvolvimento OO com Java. Vítor E. Silva Souza (vitorsouza@inf.ufes.br) http://www.inf.ufes.

7 RTTI e Interfaces. Desenvolvimento OO com Java. Vítor E. Silva Souza (vitorsouza@inf.ufes.br) http://www.inf.ufes. Desenvolvimento OO com Java 7 RTTI e Interfaces Vítor E. Silva Souza (vitorsouza@inf.ufes.br) http://www.inf.ufes.br/ ~ vitorsouza Departamento de Informática Centro Tecnológico Universidade Federal do

Leia mais

JSP - ORIENTADO A OBJETOS

JSP - ORIENTADO A OBJETOS JSP Orientação a Objetos... 2 CLASSE:... 2 MÉTODOS:... 2 Método de Retorno... 2 Método de Execução... 2 Tipos de Dados... 3 Boolean... 3 Float... 3 Integer... 4 String... 4 Array... 4 Primeira:... 4 Segunda:...

Leia mais

Curso: Ciência da Computação Disciplina: Construção de Compiladores Período: 2010-1 Prof. Dr. Raimundo Moura

Curso: Ciência da Computação Disciplina: Construção de Compiladores Período: 2010-1 Prof. Dr. Raimundo Moura UFPI CCN DIE Curso: Ciência da Computação Disciplina: Construção de Compiladores Período: 2010-1 Prof. Dr. Raimundo Moura O projeto Desenvolver um compilador de um subconjunto básico da linguagem PORTUGOL.

Leia mais

Implementação de Classe e Auto-Relacionamento em Java

Implementação de Classe e Auto-Relacionamento em Java UTFPR DAELN - Disciplina de Fundamentos de Programação II ( IF62C ). 1 Implementação de Classe e Auto-Relacionamento em Java 1)Introdução Um modelo de Diagrama de Classes representa a estrutura definida

Leia mais

Unidade Acadêmica: Faculdade de Computação FACOM Disciplina: Programação Orientada a Objetos I Professor: Fabiano Azevedo Dorça Prática 01

Unidade Acadêmica: Faculdade de Computação FACOM Disciplina: Programação Orientada a Objetos I Professor: Fabiano Azevedo Dorça Prática 01 Unidade Acadêmica: Faculdade de Computação FACOM Disciplina: Programação Orientada a Objetos I Professor: Fabiano Azevedo Dorça Prática 01 Objetivos: Modelar um sistema orientado a objetos simples a partir

Leia mais

PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br

PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS. Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br PROGRAMAÇÃO AVANÇADA -CONCEITOS DE ORIENTAÇÃO A OBJETOS Prof. Angelo Augusto Frozza, M.Sc. frozza@ifc-camboriu.edu.br ROTEIRO 1. Conceitos de Orientação a Objetos Introdução O paradigma da POO Classes

Leia mais

Prof. Esp. Adriano Carvalho

Prof. Esp. Adriano Carvalho Prof. Esp. Adriano Carvalho Um arquivo contendo uma sequência de comandos em uma linguagem de programação especifica Esses comandosrespeitam regras de como serem escritos e quais são as palavras que podem

Leia mais

Lógica de Programação

Lógica de Programação Lógica de Programação Unidade 20 ArrayList: Operações de Busca Curso Técnico em Informática SUMÁRIO INTRODUÇÃO... 3 TIPOS DE BUSCAS... 3 BUSCA ESPECÍFICA... 3 BUSCA ABRANGENTE... 3 PROCEDIMENTO DE BUSCA...

Leia mais

Sobre o Professor Dr. Sylvio Barbon Junior

Sobre o Professor Dr. Sylvio Barbon Junior 5COP088 Laboratório de Programação Aula 1 Java Prof. Dr. Sylvio Barbon Junior Sylvio Barbon Jr barbon@uel.br 1 Sobre o Professor Dr. Sylvio Barbon Junior Formação: Ciência e Engenharia da Computação (2005

Leia mais

Exemplo 1. Um programa que cria uma instância de uma classe que herda da classe Frame

Exemplo 1. Um programa que cria uma instância de uma classe que herda da classe Frame 6. Como aplicações gráficas funcionam em Java? Todas as aplicações gráficas em Java usam instâncias de classes existentes, que por serem parte da linguagem podem ser executadas em todas as versões de Java

Leia mais

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

AULA 4 VISÃO BÁSICA DE CLASSES EM PHP AULA 4 VISÃO BÁSICA DE CLASSES EM PHP Antes de mais nada, vamos conhecer alguns conceitos, que serão importantes para o entendimento mais efetivos dos assuntos que trataremos durante a leitura desta apostila.

Leia mais

Organizando Classes em Pacotes. Profa. Thienne Johnson EACH/USP

Organizando Classes em Pacotes. Profa. Thienne Johnson EACH/USP Organizando Classes em Pacotes Profa. Thienne Johnson EACH/USP Criando e usando pacotes Nomeando um pacote Usando membros de pacotes Gerenciando arquivos Exercícios Usando pacotes no Eclipse Tutorial da

Leia mais

Implementando uma Classe e Criando Objetos a partir dela

Implementando uma Classe e Criando Objetos a partir dela Análise e Desenvolvimento de Sistemas ADS Programação Orientada a Obejeto POO 3º Semestre AULA 04 - INTRODUÇÃO À PROGRAMAÇÃO ORIENTADA A OBJETO (POO) Parte: 2 Prof. Cristóvão Cunha Implementando uma Classe

Leia mais

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

Material de Apoio 5. int getres() { return res; O que estas classes possuem em comum? 1) 2) 3) pg. 1/6 Material de Apoio 5 Herança Observe o código das classes Fatorial e Fibonacci apresentados abaixo. class Fatorial { class Fibonacci { private int n, res; private int n, res; public Fatorial( int

Leia mais

UNIVERSIDADE FEDERAL DO PARANÁ

UNIVERSIDADE FEDERAL DO PARANÁ CURSO: Ciência da Computação DATA: / / 2013 PERÍODO: 4 o. PROFESSOR: Andrey DISCIPLINA: Técnicas Alternativas de Programação AULA: 03 APRESENTAÇÃO: Hoje vamos conhecer o comando switch, o bloco try catch;

Leia mais

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

Criar a classe Aula.java com o seguinte código: Compilar e Executar Introdução à Java Prof. Bruno Gomes bruno.gomes@ifrn.edu.br Programação Orientada a Objetos Código Exemplo da Aula Criar a classe Aula.java com o seguinte código: public class Aula { public static void

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Marcelo Lobosco DCC/UFJF Comunicação em Sistemas Distribuídos Aula 06 Agenda Modelo Cliente-Servidor (cont.) Invocação Remota de Método (Remote Method Invocation RMI) Visão Geral

Leia mais

Encapsulamento de Dados

Encapsulamento de Dados Encapsulamento de Dados Universidade Católica de Pernambuco Ciência da Computação Prof. Márcio Bueno poonoite@marciobueno.com Fonte: Material da Profª Karina Oliveira Modificadores de Visibilidade Especificam

Leia mais

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

Programação com Acesso a BD. Programação com OO Acesso em Java Programação com OO Acesso em Java a BD Curso: Técnico em Informática Campus: Ipanguaçu José Maria Monteiro Pontifícia Universidade Católica do Rio de Janeiro PUC-Rio Departamento Clayton Maciel de Informática

Leia mais

Escola Superior de Gestão e Tecnologia. Tratamento de Exceções

Escola Superior de Gestão e Tecnologia. Tratamento de Exceções Escola Superior de Gestão e Tecnologia Tratamento de Exceções Objetivos Compreender como o tratamento de exceção e de erro funciona. Como u4lizar try, throw e catch para detectar, indicar e tratar exceções,

Leia mais

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

Comandos de repetição For (inicialização; condição de execução; incremento/decremento) { //Código } Este documento tem o objetivo de demonstrar os comandos e sintaxes básicas da linguagem Java. 1. Alguns passos para criar programas em Java As primeiras coisas que devem ser abordadas para começar a desenvolver

Leia mais

Prototype, um Design Patterns de Criação

Prototype, um Design Patterns de Criação Prototype, um Design Patterns de Criação José Anízio Pantoja Maia Este artigo tem como finalidade compreender o funcionamento do padrão de projeto prototype, serão abordados os participantes que compõe

Leia mais

PROGRAMAÇÃO ESTRUTURADA. CC 2º Período

PROGRAMAÇÃO ESTRUTURADA. CC 2º Período PROGRAMAÇÃO ESTRUTURADA CC 2º Período PROGRAMAÇÃO ESTRUTURADA Aula 07: Funções O comando return Protótipo de funções O tipo void Arquivos-cabeçalho Escopo de variáveis Passagem de parâmetros por valor

Leia mais