Java. Disciplina: Programação Modular Prof. Marco Túlio de Oliveira Valente

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

Download "Java. Disciplina: Programação Modular Prof. Marco Túlio de Oliveira Valente"

Transcrição

1 Java Disciplina: Programação Modular Prof. Marco Túlio de Oliveira Valente

2 Introdução James Gosling e equipe (Sun, 1995) Linguagem compilada e posteriormente interpretada bytecode: linguagem intermediária Assembly de uma máquina hipotética Máquina Virtual Java: interpretador de bytecodes Não é novidade: Pascal-P (Wirth, década de 70) Mesma estratégia em C#: CLR e CIL (ou MSIL) Vantagem: portabilidade prog1.java (fonte) COMPILADOR prog1.class (bytecodes) MÁQUINA VIRTUAL JAVA - JVM (INTERPRETADOR) 2

3 Princípios de Projetos Linguagem que fosse: Simples, orientada a objetos, familiar Robusta e segura Arquiteturalmente neutra e portável Alto desempenho Interpretada, multi-thread e dinâmica 3

4 Java é mais simples que C++ Sem ponteiros, apenas referências Sem funções, apenas métodos estáticos Sem variáveis globais, apenas atributos estáticos Sem delete, mas com coletor de lixo Sem arquivos de header, mas interfaces Sem sobrecarga de operadores, apenas de métodos Sem pré-processador, mas com membros final Sem herança múltipla de classes, mas com herança múltipla de interfaces 4

5 Java é mas segura que C++ Não é possíveis acessar quaisquer áreas de memória: Não existe aritmética de ponteiros. Exemplo: p++ Não existem casts não-verificados. Exemplo: (char *) 2 Não existem acessos além dos limites de um vetor. Exemplo: buffer[-1] 5

6 Java é mais portátil que C++ Independência de hardware e sistema operacional. Mesmo programa roda em uma grande variedade de hardware e sistemas operacionais. Programas.java são compilados para uma representação intermediária, chamada bytecode (.class) Máquina Virtual Java (JVM): interpretador de bytecodes 6

7 Java tem mais bibliotecas que C++ Vasta gama de bibliotecas para: construção de interfaces gráficas (java.awt e javax.swing) programação distribuída (java.rmi) programação multithread (java.lang.threads) entrada/saída e redes: (java.io, java.net) estruturas de dados (java.util) bancos de dados (java.sql) etc 7

8 Primeiro Programa // arquivo HelloWorld.java public class HelloWorld { public static void main(string[ ] args){ System.out.println ( Hello, world ); Todo arquivo deve ter uma classe pública com o mesmo nome do arquivo Execução começa pelo método main desta classe Observações: Programa em Java é um conjunto de classes Implementação dos métodos sempre dentro da classe 8

9 Sintaxe e Tipos Primitivos Sintaxe bastante parecida com C/C++. Mesmos comandos básicos: if, switch, while, do while, for, return, break, continue Mesmos operadores aritméticos, lógicos e relacionais Tipos primitivos: boolean (8 bits) char (16 bits) byte (8 bits), short (16 bits), int (32 bits), long (64 bits) float (32 bits), double (64 bits) 9

10 Classes class Point { private double x, y; // campos public Point (double x, double y) { this.x= x; this. y= y; public double getx() { return x; public double gety() { return y; public void move(double dx, double dy) { x=+ dx; y=+ dy; // construtora // métodos 10

11 Classes (cont.) public double distance(point that) { double xdiff= this.x - that.getx(); double ydiff= this.y - that.gety(); return Math.sqrt(xdiff*xdiff + ydiff*ydiff); public void clear() { x= 0; y= 0; 11

12 Objetos Sempre criados via new e alocados no heap. Exemplo: void foo() { Point p1; // p1 e p2 são referências para objetos Point p2; p1= new Point(5,5); p2= new Point(1000,500); double dist= p1.distance(p2); // chamada de método p1 e p2 são duas variáveis alocadas no stack que referenciam (ou apontam para objetos alocados no heap). Em Java, objetos nunca são alocados no stack. 12

13 Programa Equivalente em C++ void foo() { Point *p1; Point *p2; p1= new Point(5,5); p2= new Point(1000,500); double dist= p1->distance(p2); // chamada de método delete p1; delete p2; 13

14 Coletor de Lixo Não existe free ou delete Programador aloca, mas não precisa liberar memória Tarefa normalmente sujeita a diversos erros Funcionamento: Existe na JVM um processo, chamado coletor de lixo, que fica continuamente procurando por objetos que não estão sendo mais referenciados Quando encontra um objeto inacessível, o coletor de lixo libera a área de memória alocada para o mesmo Não se tem controle sobre o momento em que o coletor de lixo roda Não é uma novidade em LP: LISP,

15 Exemplo de Coleta de Lixo class BigClasse { private int x; private int bigvetor []; // vetor de inteiros public BigClasse (int x) { System.out.println ("Criando " + x1); this.x= x1; bigvetor= new int [1024*1024]; protected void finalize () { System.out.println("Eliminando " + x); // BigClasse 15

16 Exemplo de Coleta de Lixo public class Exemplo2 { public static void main(string[] args) { BigClasse p; for (int i= 0; i < 100; i++) p= new BigClasse (i); Método finalize(): chamado automaticamente pelo coletor antes de liberar a área de memória de um objeto Utilidade: liberar outros recursos (que não memória) Exemplo: fechar arquivos, fechar conexões etc 16

17 Semântica de Valor e de Referência C++: objetos tratados com semântica de valor ou referência (programador que decide) void foo() { Point *p1; // semântica de referência Point p2; // semântica de valor... Java: objetos tratados exclusivamente com semântica de referência void foo() { Point p1; // semântica de referência... p1= new Point(10,10); 17

18 Referência this Referência para o objeto receptor de uma chamada de método class Point { private double x, y; public Point (double x, double y) { this.x= x; this. y= y;... 18

19 Membros Estáticos Campos estáticos: semântica de variável global; são campos da classe e não de uma instância em particular. Existem mesmo que não existam objetos da classe Point. class Point { private static Point origin= new Point(0,0);... Métodos estáticos: semântica de funções de C ou C++ São métodos da classe Não dependem de uma instância para serem chamados. Exemplo: Math.sqrt Podem acessar apenas atributos e métodos estáticos Não podem acessar a referência this 19

20 Campos Final Campos read-only. Uma vez inicializados, nunca mais podem ser alterados. Normalmente, são também estáticos. Exemplo: public static final double PI = 3.14; 20

21 Vetores Vetores são tratados com objetos e, portanto, são criados via operador new (e alocados no heap). class Gauss { public static void main(string[] args) { int[] ia = new int[101]; // índices vão de 0 a 100 for (int i = 0; i < ia.length; i++) ia[i] = i; int sum = 0; for (int i = 0; i < ia.length; i++) sum += ia[i]; System.out.println(sum); Tamanho do vetor é definido em tempo de criação; uma vez criado, não pode ser modificado Tentativa de usar um vetor além dos limites permitidos gera uma exceção do tipo ArrayIndexOutOfBoundsException 21

22 Vetores de Vetores Exemplo: float[][] mat= new float[4][4]; setupmatrix(mat); for (int y= 0; y < mat.length; y++) { for (int x= 0; x < mat[y].length; x++) System.out.print(mat[y][x] + " "); System.out.println(); 22

23 Strings Strings são objetos da classe String. Exemplo: String greeting = "Hello world!"; Classe String possui diversos métodos para manipular strings. Exemplos: charat, concat, endswith, length, tolowercase etc Objetos da classe String são imutáveis. Operações sobre strings sempre retornam uma nova string. String original permanece inalterada. 23

24 Herança Possui apenas herança simples de classes Exemplo: class Pixel extends Point { Color color; // novo atributo public void clear() { // redefine (ou sobresceve) método herdado super.clear(); color= null; // chama método da superclasse Polimorfismo: objetos Pixel podem ser usados por qualquer código que espere um Point 24

25 Chamada Dinâmica de Métodos Não existem métodos virtuais; maioria dos métodos são automaticamente considerados virtuais (isto é, chamados dinamicamente) Exceções: métodos privados e estáticos Exemplo: Figura p; // Quadrado e Circulo subclasses de Figura if (... ) p= new Quadrado (4); // atribuição polimórfica else p= new Circulo (3); // atribuição polimórfica double a= p.area (); // chamada dinâmica 25

26 Classe Object Raiz da hierarquia de classes de Java Toda classe (direta ou indiretamente) é subclasse de Object Utilidade: variável do tipo Object pode se referir a qualquer objeto (de qualquer classe) Exemplo 1: void push(object item) {... Exemplo 2: Object oref= new Pixel();... oref = "Alguma String" 26

27 Classe Object Exemplo 3: String name= "Petronius" Object obj= name; name= obj; // Erro de compilação name= (String) obj; // ok Se coerção falhar em tempo de execução, lança-se uma exceção ClassCastException. 27

28 Classes e Métodos final Evitando herança: final class Senha {... class MinhaSenha extends Senha {... // Erro! Evitando redefinição de métodos: class Senha {... public final bool validarsenha () { class MinhaSenha extends Senha {... bool validarsenha () {... // Erro!... 28

29 Classes Abstratas Exemplo: abstract class Figura { public abstract double area (); public abstract double perimetro ();... void foo() { Figura f1; // ok, f1 é apenas uma referência Figura f2= new Figura() // Erro, não é possível instanciar // objetos de classes abstratas Implementação de area() e perimetro() ficará a cargo das subclasses de Figura. 29

30 Interfaces Usadas para enriquecer o modelo de herança simples de Java Permitem alguns benefícios de herança múltipla, sem os problemas que herança múltipla introduz no projeto e implementação de linguagens Interface define um tipo composto apenas por: Assinaturas de métodos Constantes Uma interface não inclui variáveis de instância, nem código para implementação de métodos. Uma classe pode declarar que implementa (implements) uma interface. Neste caso, ela assume o compromisso de implementar todos os métodos desta interface 30

31 Interfaces Exemplo (declaração da interface): interface Comparable { int compareto(object o); Exemplo (implementação da interface): class Professor extends Pessoa implements Comparable { int matr;... int compareto(object o) { Professor that= (Professor) o; Compara this.matr e that.matr, retornando -1, 0 ou 1 31

32 Interfaces Exemplo (uso da interface): void qsort (Comparable[] v) {... Não importa a classe dos objetos do vetor v (ou seja, essas classes ficam livres para herdarem de outras classes) 32

33 Interfaces Interface define um contrato (ou protocolo) entre: Um provedor de serviços (ex: quem implementa compareto) Um usuário de serviços (ex: método de ordenação) Uma classe pode herdar de uma única classe, mas pode implementar múltiplas interfaces. Logo, objetos em Java podem ter múltiplos tipos, incluindo o tipo de sua classe e os tipos das interfaces que ela implementa. Uma interface pode estender uma ou mais interfaces (adicionando novas constantes ou novos métodos). Ou seja, existe herança múltipla de interfaces (a qual não implica em nenhuma forma de reúso de código) 33

34 Classes Genéricas Exemplo: public class Box<T> { private T t; public void add(t t) { this.t = t; public T get() { return t; // T stands for "Type"... Box<Integer> integerbox = new Box<Integer>(); integerbox.add(new Integer(10)); Integer someinteger = integerbox.get(); // no cast! 34

35 Interfaces Genéricas Exemplo de interface genérica: interface Table<T> { T find(string name); É melhor que: interface Table { Object find(string name); 35

36 Interfaces Genéricas Implementação da interface class IntegerTable implements Table<Integer> { private String[] names; private Integer[] values; public Integer find(string name) {... 36

37 Interfaces Genéricas Código que usa interface genérica (1ª tentativa) void processvalues(string[] names, Table<Object> table { for (int i= 0; i < names.length; i++) { Object value= table.find(names[i]); if (value!= null) process(names[i], value); Problema: Table<Integer> t= new IntegerTable(); //... adiciona itens em t String[] names= { "Um", "Dois" ; processvalues(names, t); // Erro! 37

38 Interfaces Genéricas Integer é subtipo de Object. Mas, Table<Integer> não é um subtipo de Table<Object> Exemplo: List<String> ls= new ArrayList<String>(); List<Object> lo= ls; Atribuição acima é válida? Não, conforme justificado a seguir. lo.add(new Object()); // via lo, seria possível adicionar objetos de quaisquer tipos em ls String s= ls.get(0); // não se garante mais que get retorne sempre um string 38

39 Tipos Genéricos e Wildcards List <?>: super-tipo de todas as listas E não List<Object> pelas razões descritas no slide anterior Exemplo: List<String> ls= new ArrayList<String>(); List<Object> lo= ls; // Erro compilação List<?> lu= ls; // ok lu.add(new Object()); // Erro compilação Object o= lu.get(0);?: stands for some unknown type Any parameter we pass to add would have to be a subtype of this unknown type. Since we don't know what type that is, we cannot pass anything in. 39

40 Tipos Genéricos e Wildcards 1a Solução: usando um tipo coringa ilimitado (?) void processvalues(string [] names, Table<?> table { for (int i= 0; i < names.length; i++) { Object value= table.find(names[i]); // OK if (value!= null) process(names[i], value); Table<Integer> t= new IntegerTable(); //... adiciona itens em t String [] names= { "Um", "Dois" ; processvalues(names, t); // ok 40

41 Tipos Genéricos e Wildcards 2a Solução (melhor): usando um tipo coringa limitado void processvalues(string[] names, Table<? extends Number> table { for (int i= 0; i < names.length; i++) { Number value= table.find(names[i]); if (value!= null) process(names[i], value); 41

42 Packages Recurso para modularização de programas em Java Package: conjunto de arquivos Cada arquivo pode possuir, no máximo, uma classe pública O nome do arquivo é o mesmo de sua classe pública Todo pacote possui um nome Exemplo: pacote figuras Com classes públicas Figura, Circulo, Quadrado Arquivo c:\temp\figuras\figura.java: package figuras; public abstract class Figura {... // outras classes (não-públicas) 42

43 Packages Arquivo c:\temp\figuras\circulo.java package figuras; public class Circulo {... // outras classes (não-públicas) Arquivo c:\temp\figuras\quadrado.java package figuras; public class Quadrado {... // outras classes (não-públicas) 43

44 Packages Nome do pacote deve ser igual ao nome do diretório que contém seus arquivos Variável de ambiente CLASSPATH: deve conter o nome do diretório onde se encontra o diretório do pacote Exemplo: set CLASSPATH=%CLASSPATH%;c:\temp 44

45 Packages Como referenciar classes públicas de um pacote fora do mesmo? Via qualificação com o nome do pacote: figuras.figura fig; figuras.circulo c; java.awt.button btnok; Via comando import no início do arquivo: import figuras.*; // importa todas classes de figuras import java.awt.button; // importa apenas classe Button... Figura fig; Circulo c; Button btnok; 45

46 Tratamento de Exceções em Java Como ativar uma exceção: throw <expressão> Expressão deve ser um objeto de uma classe derivada da classe pré-definida Exception Similar a C++, porém incluir um new para criar objeto Métodos devem relacionar na clásula throws todas as exceções que podem encerrar a execução do mesmo Exemplo: class DivisaoPorZero extends Exception { ;... double divisao (double x, double y) throws DivisaoPorZero { if (y = = 0) throw new DivisaoPorZero (); return x / y; 46

47 Tratamento de Exceções em Java Como especificar um tratador de exceções? try {... catch (ExceptionType ident ) {... catch (ExceptionType ident) {... finally {... finally é executado ocorrendo ou não uma exceção no try Exemplo: try {... catch (A e) {... finally {... finally será executado quando: (a) try terminar corretamente; (b) try terminar com uma exceção capturada ou não pelo catch 47

48 Tratamento de Exceções em Java Exemplo sem finally: file.open(); try {... // processa arquivo catch (IOException e) { file.close(); throw e; file.close(); Exemplo com finally: file.open(); try {.. finally { file.close(); 48

49 Exceções Não-Verificadas Exceções Verificadas: Subclasses de Exception Exemplos: IOException, FileNotFoundException Devem ser tratadas no corpo de um método (em um catch) ou explicitamente declaradas na assinatura do método Em resumo, um método somente pode retornar com exceções verificadas que ele lista em sua cláusula throws Exceções não-verificadas: Subclasses de RuntimeException ou Error Normalmente, exceções que representam algum erro na lógica do programa; clientes normalmente não tem o que fazer nestes casos Exemplos: ArrayIndexOutOfBoundsException, NullPointerException 49

50 Java RMI Disciplina: Programação Modular Prof. Marco Túlio de Oliveira Valente

51 Java RMI Middleware para programação distribuída em Java Implementado como um pacote da linguagem 51

52 Java RMI: Exemplo de Aplicação Codificar um servidor com um objeto da seguinte classe: class ContaImpl... {... public float obtersaldo ();... Codificar um cliente que chame remotamente o método obtersaldo() deste objeto 52

53 Java RMI: Exemplo de Aplicação Passo 1: Definição da interface remota (assinatura dos métodos que serão invocados remotamente) // arquivo Conta.java import java.rmi.remote; import java.rmi.remoteexception; interface Conta extends Remote {... public float obtersaldo () throws RemoteException;... 53

54 Java RMI: Exemplo de Aplicação Passo 2: Implementação da Interface Remota (servidor) class ContaImpl extends UnicastRemoteObject implements Conta { private int numero; private float saldo= 0.0; public ContaImpl (int n) throws RemoteException { numero= n; public float obtersaldo () throws RemoteException { return saldo; public static void main (String[] args) {... Conta c= new ContaImpl (804); Naming.rebind ( Conta804, c); // registra este objeto 54

55 Java RMI: Exemplo de Aplicação Passo 3: Implementação do Cliente import java.rmi.*; import java.rmi.server.*; public class ClienteImpl { public static void main (String[] args) {... Conta c= (Conta) Naming.lookup ( // + args[0] + /Conta804 ); float s= c.obtersaldo(); // chamada remota, mesma sintaxe chamada local... 55

56 Java RMI: Exemplo de Aplicação Passo 4: Compilação Compilação do servidor: javac ContaImpl.java Compilação do cliente: javac ClienteImpl.java Geração de stubs: rmic ContaImpl rmic gera os seguintes arquivos: ComtaImpl_Stub.class: stub do cliente ContaImpl_Skel.class: skeleton (nome dado ao stub do serv.) Passo 5: Execução Execução do Servidor: rmiregistry // registry (permanece em execução) java ContaImpl // servidor (em outro processo) Execução do Cliente: java clienteimpl dcc_srv01 56

57 Passagem de Parâmetros Objetos serializáveis são passador por valor: Classe do objeto deve implementar a interface Serializable Passa-se uma cópia do objeto (atributos + métodos) Objetos remotos são passadas por referência: Passa-se a referência (e não o objeto), a qual pode ser utilizada para realizar um callback no cliente Callback: servidor chama método do cliente Usado, por exemplo, quando o servidor deseja notificar o cliente sobre a ocorrência de algum evento 57

58 Exemplo de Callback Cliente Servidor objeto remoto objeto remoto void g () {... A B void f (A a) { a.g(); // callback a s s.f(a); 58

59 Java RMI - Chat Aplicação de chat usando Java RMI, com a seguinte interface: 59

60 Sistema de Chat em Java RMI conectados remoto void conecta(c c) { adiciona c em conectados void envia (String s) { for (int i= 0; i < conectados.size; i++) conectados[i].display(s); // callback remoto remoto remoto display (s) display (s) display (s) c s.conecta(c);... s.envia( Bom dia! ); c s.conecta(c); c s.conecta(c); 60

61 Reflexão Computacional Disciplina: Programação Modular Prof. Marco Túlio de Oliveira Valente

62 Reflexão Computacional Capacidade de um sistema se auto-inspecionar e auto-manipular Um sistema reflexivo possui dois níveis: Nível básico: contém objetos do domínio da aplicação Meta-nível: contém objetos que permitem acessar propriedades e manipular objetos do nível básico Objeto do meta-nível são chamados de meta-objetos Protocolo de meta-objetos: protocolo de interação com metaobjetos Reificação: ação de transformar em meta-objetos informações do nível base Reflexão envolve duas atividades: Inspeção: quando meta-nível inspeciona informações do nível básico Interseção: quando meta-nível interfere no comportamento ou na estrutura do nível básico 62

63 Reflexão em Java Tudo começa com um meta-objeto do tipo Class Exemplo: Class c= Class.forName( java.util.stack ); Pode-se usar métodos do tipo Class para inspeção de informações: Obter a super-classe do tipo base Obter interfaces que são implementadas pelo tipo base Obter informações sobre os construtores do tipo base Obter informações sobre os métodos do tipo base (modificadores, tipo de retorno, tipo dos parâmetros) Pode-se ainda interceder no nível básico do programa para: Criar objetos de tipos cujos nomes somente serão conhecidos em tempo de execução Obter/definir valores de atributos cujos nomes somente serão conhecidos em tempo de execução Invocar métodos cujos nomes somente serão conhecidos em tempo de execução 63

64 Reflexão em Java Programa que lista informações sobre uma interface cujo nome é informado pelo usuário: Console.readString(s); // le nome da interface do teclado Class c= Class.forName(s); Method[] themethods= c.getmethods(); for (int i = 0; i < themethods.length; i++) { String methodstring= themethods[i].getname(); System.out.println("Name: " + methodstring); String returnstring= themethods[i].getreturntype().getname(); System.out.println(" Return Type: " + returnstring); Class[] parametertypes= themethods[i].getparametertypes(); System.out.print(" Parameter Types:"); for (int k= 0; k < parametertypes.length; k ++) { String parameterstring= parametertypes[k].getname(); System.out.print(" " + parameterstring); System.out.println(); 64

65 Classes Proxy Dinâmicas Recurso de reflexão de Java para criação dinâmica de proxies Proxy: padrão de projeto comum em aplicações distribuídas Proxy: objeto que implementa a mesma interface de um objeto base Age como um intermediário entre objeto base e seus clientes Normalmente, possuem uma referência para objeto base e interceptam todas as chamadas destinadas ao mesmo Exemplo: stubs são exemplos de proxy Em Java, classes proxy dinâmicas têm duas propriedades: Seu código é criado em tempo de execução Implementam interfaces definidas em tempo de criação Instâncias de classes proxy dinâmicas têm ainda um objeto manipulador de invocação (invocation handler), o qual é definido pelo cliente que solicitou a criação das mesmas. 65

66 Classes Proxy Dinâmicas Toda a invocação de método sobre uma instância de uma classe proxy dinâmica é enviada automaticamente para o método invoke do manipulador desta instância, passando os seguintes parâmetros: a instância da classe proxy sobre a qual a invocação foi realizada; um objeto da classe java.lang.reflect.method, o qual reifica o método que está sendo chamado; um vetor do tipo Object que contém os argumentos deste método. 66

67 Classes Proxy Dinâmicas <<interface>> Service service implements Client references DynamicProxyClass service ServiceImpl service references <<interface>> InvocationHandler implements InvocationHandlerIm pl references invoke(object, Method, Object[]) invoke(object, Method, Object[]) 67

68 Exemplo de Classe Proxy class DebugHandler implements java.lang.reflect.invocationhandler { private Object base; private DebugHandler(Object base) { this.base = base; public Object invoke(object proxy, Method m, Object[] args) throws Throwable { Object result; try { System.out.println("before method " + m.getname()); result = m.invoke(base, args); // forward to base object catch (...) {... finally { System.out.println("after method " + m.getname()); return result; // class DebugHandler 68

69 Exemplo de Classe Proxy Exemplo de Uso: interface Foo { Object bar(object obj); class FooImpl implements Foo { Object bar(object obj) { Foo base= new FooImpl(); DebugHandler handler= new DebugHandler(base); Class c= base.getclass(); Foo proxy= Proxy.newProxyInstance(c.getClassLoader(), c.getinterfaces(), handler);... proxy.bar(...); 69

Chamadas Remotas de Procedimentos (RPC) O Conceito de Procedimentos. RPC: Programa Distribuído. RPC: Modelo de Execução

Chamadas Remotas de Procedimentos (RPC) O Conceito de Procedimentos. RPC: Programa Distribuído. RPC: Modelo de Execução Chamadas Remotas de Chamada Remota de Procedimento (RPC) ou Chamada de Função ou Chamada de Subrotina Método de transferência de controle de parte de um processo para outra parte Procedimentos => permite

Leia mais

Invocação de Métodos Remotos

Invocação de Métodos Remotos Invocação de Métodos Remotos Java RMI (Remote Method Invocation) Tópicos Tecnologia RMI Introdução Modelo de camadas do RMI Arquitetura Fluxo de operação do RMI Passos para implementação Estudo de caso

Leia mais

SISTEMAS DISTRIBUÍDOS

SISTEMAS DISTRIBUÍDOS SISTEMAS DISTRIBUÍDOS CUP Disk Memoey CUP Memoey Disk Network CUP Memoey Disk Remote Method Invocation (RMI) Introdução Solução JAVA para Objetos Distribuídos Um objeto existe em uma máquina É possível

Leia mais

Java 2 Standard Edition. Fundamentos de. Objetos Remotos. Helder da Rocha www.argonavis.com.br

Java 2 Standard Edition. Fundamentos de. Objetos Remotos. Helder da Rocha www.argonavis.com.br Java 2 Standard Edition Fundamentos de Objetos Remotos Helder da Rocha www.argonavis.com.br 1 Sobre este módulo Este módulo tem como objetivo dar uma visão geral, porém prática, da criação e uso de objetos

Leia mais

MIDDLEWARE Aplicativos RMI, RPC e eventos Camadas Protocolo Requesição-Respostal Middleware Representação Externa dos Dados Sistemas Operacionais

MIDDLEWARE Aplicativos RMI, RPC e eventos Camadas Protocolo Requesição-Respostal Middleware Representação Externa dos Dados Sistemas Operacionais RMI JAVA MIDDLEWARE Aplicativos RMI, RPC e eventos Protocolo Requesição-Respostal Camadas Middleware Representação Externa dos Dados Sistemas Operacionais RMI REMOTE METHOD INVOCATION Invocação remota

Leia mais

Análise de Programação

Análise de Programação Análise de Programação Conceitos Avançados da Linguagem de Programação Java Prof Gilberto B Oliveira Encapsulamento Proteger o dado dentro de uma classe (capsula segura) Facilita o uso da classe por outros

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

Sistemas Paralelos e Distribuídos - 2003/2004 Curso: Matemática /Informática Sistemas Distribuídos - 2003/2004 Curso: Ensino da Informática

Sistemas Paralelos e Distribuídos - 2003/2004 Curso: Matemática /Informática Sistemas Distribuídos - 2003/2004 Curso: Ensino da Informática Java RMI - Remote Method Invocation Folha 5-1 No modelo de programação orientada a objectos, vimos que um programa consiste numa colecção de objectos que comunicam entre si através da invocação dos seus

Leia mais

Invocação de Métodos Remotos RMI (Remote Method Invocation)

Invocação de Métodos Remotos RMI (Remote Method Invocation) Invocação de Métodos Remotos RMI (Remote Method Invocation) Programação com Objetos Distribuídos Um sistema de objetos distribuídos permite a operação com objetos remotos A partir de uma aplicação cliente

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

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

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

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

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

A ) O cliente terá que implementar uma interface remota. . Definir a interface remota com os métodos que poderão ser acedidos remotamente Java RMI - Remote Method Invocation Callbacks Folha 9-1 Vimos, na folha prática anterior, um exemplo muito simples de uma aplicação cliente/ servidor em que o cliente acede à referência remota de um objecto

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

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

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

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

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

Num sistema de objectos distribuídos, dois conceitos são fundamentais.

Num sistema de objectos distribuídos, dois conceitos são fundamentais. Folha 10-1 Java RMI - Remote Method Invocation No modelo de programação orientada a objectos, vimos que um programa consiste numa colecção de objectos que comunicam entre si através da invocação dos seus

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

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

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

Sintaxe Geral Tipos de Dados. Prof. Angelo Augusto Frozza, M.Sc. Sintaxe Geral Tipos de Dados Comentários Comentários: De linha: // comentário 1 // comentário 2 De bloco: /* linha 1 linha 2 linha n */ De documentação: /** linha1 * linha2 */ Programa Exemplo: ExemploComentario.java

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

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

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

PROGRAMAÇÃO ORIENTADA A OBJETOS -TRATAMENTO DE EXCEÇÕES. Prof. Angelo Augusto Frozza, M.Sc. [email protected]

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. [email protected] ROTEIRO 5. Tratamento de Exceções Introdução e conceitos Capturando exceção usando

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

Orientação a Objetos em Java. Leonardo Gresta Paulino Murta [email protected]

Orientação a Objetos em Java. Leonardo Gresta Paulino Murta leomurta@ic.uff.br Orientação a Objetos em Java Leonardo Gresta Paulino Murta [email protected] Agenda Introdução; Orientação a Objetos; Orientação a Objetos em Java; Leonardo Murta Orientação a Objetos em Java 2 Agosto/2007

Leia mais

Java RMI. RMI Remote Method Invocation. Chamadas Remotas de Procedimentos (RPC) RPC - Implementação

Java RMI. RMI Remote Method Invocation. Chamadas Remotas de Procedimentos (RPC) RPC - Implementação Java Remote Method Invocation Java Remote Method Invocation () é um protocolo Java para comunicação entre processos Permite objetos Java invocar transparentemente métodos de outros objetos (que podem estar

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

Tutorial RMI (Remote Method Invocation) por Alabê Duarte

Tutorial RMI (Remote Method Invocation) por Alabê Duarte Tutorial RMI (Remote Method Invocation) por Alabê Duarte Este tutorial explica basicamente como se implementa a API chamada RMI (Remote Method Invocation). O RMI nada mais é que a Invocação de Métodos

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos LICENCIATURA EM COMPUTAÇÃO Prof. Adriano Avelar Site: www.adrianoavelar.com Email: [email protected] Relembrando... Mecanismos de Comunicação Middleware Cenário em uma rede Local

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

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

Computação II Orientação a Objetos

Computação II Orientação a Objetos Computação II Orientação a Objetos Fabio Mascarenhas - 2014.1 http://www.dcc.ufrj.br/~fabiom/java Introdução Esse não é um curso de Java! O objetivo é aprender os conceitos da programação orientada a objetos,

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 ([email protected]) http://www.inf.ufes.br/~vitorsouza Departamento de Informática Centro Tecnológico Universidade Federal

Leia mais

Programação por Objectos. Java

Programação por Objectos. Java Programação por Objectos Java Parte 3: Métodos LEEC@IST Java 1/45 Métodos (1) Sintaxe Qualif Tipo Ident ( [ TipoP IdentP [, TipoP IdentP]* ] ) { [ Variável_local Instrução ]* Qualif: qualificador (visibilidade,

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

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 [email protected] 1 Sobre o Professor Dr. Sylvio Barbon Junior Formação: Ciência e Engenharia da Computação (2005

Leia mais

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

Construção de novas Classes em Java. Classes Atributos Métodos Herança... Construção de novas Classes em Java Classes Atributos Métodos Herança... 1 Exemplo Representação em UML Java (Unified Modeling Language) Stack items : Vector Stack( ) push( ) pop( ) isempty( ) finalize(

Leia mais

Objetos Distribuídos - Programação Distribuída Orientado a Objetos. Luiz Affonso Guedes

Objetos Distribuídos - Programação Distribuída Orientado a Objetos. Luiz Affonso Guedes Objetos Distribuídos - Programação Distribuída Orientado a Objetos Luiz Affonso Guedes Introdução Conceitos básicos programação distribuída + programação orientada a objetos = Objetos distribuídos Motivação

Leia mais

Uma Introdução à Arquitetura CORBA. O Object Request Broker (ORB)

Uma Introdução à Arquitetura CORBA. O Object Request Broker (ORB) Uma Introdução à Arquitetura Francisco C. R. Reverbel 1 Copyright 1998-2006 Francisco Reverbel O Object Request Broker (ORB) Via de comunicação entre objetos (object bus), na arquitetura do OMG Definido

Leia mais

Orientação a Objetos e a Linguagem Java

Orientação a Objetos e a Linguagem Java Orientação a Objetos e a Linguagem Java Afrânio Assis [email protected] Novembro/2006 1 Reutilizição com Herança e Composição Novembro/2006 2 Introdução Separar as partes que podem mudar das partes que

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

Programação Orientada a Objetos e Java - Introdução. Carlos Lopes

Programação Orientada a Objetos e Java - Introdução. Carlos Lopes Programação Orientada a Objetos e Java - Introdução Carlos Lopes POO e Java Objetivo: proporcionar uma visão dos conceitos de POO e do seu uso na estruturação dos programas em Java. Classes e objetos em

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

Módulo 06 Desenho de Classes

Módulo 06 Desenho de Classes Módulo 06 Desenho de Classes Última Atualização: 13/06/2010 1 Objetivos Definir os conceitos de herança, polimorfismo, sobrecarga (overloading), sobreescrita(overriding) e invocação virtual de métodos.

Leia mais

BSI UFRPE Prof. Gustavo Callou [email protected]

BSI UFRPE Prof. Gustavo Callou gcallou@gmail.com BSI UFRPE Prof. Gustavo Callou [email protected] HelloWorld.java: public class HelloWorld { public static void main (String[] args) { System.out.println( Hello, World ); } } Identificadores são usados

Leia mais

Sistemas Distribuídos: Conceitos e Projeto Java RMI

Sistemas Distribuídos: Conceitos e Projeto Java RMI Sistemas Distribuídos: Conceitos e Projeto Java RMI Francisco José da Silva e Silva Laboratório de Sistemas Distribuídos (LSD) Departamento de Informática / UFMA http://www.lsd.deinf.ufma.br 19 de agosto

Leia mais

Java RMI. Alcides Calsavara

Java RMI. Alcides Calsavara Java RMI Alcides Calsavara Objetivos Permitir que um método de uma classe Java em execução em uma máquina virtual JVM chame um método de um objeto (instância de uma classe Java) situado em outra máquina

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

7 RTTI e Interfaces. Desenvolvimento OO com Java. Vítor E. Silva Souza ([email protected]) 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 ([email protected]) http://www.inf.ufes.br/ ~ vitorsouza Departamento de Informática Centro Tecnológico Universidade Federal do

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

Programação Orientada a Objetos C++

Programação Orientada a Objetos C++ Programação Orientada a Objetos em C++ Sumário Histórico Comparação com Java Encapsulamento Tratamento de classes e objetos Herança Polimorfismo Histórico Desenvolvido por Bjarne Stroustrup dos Bell Labs

Leia mais

Computação II - Java Prof. Adriano Joaquim de Oliveira Cruz Aula Prática - Herança, Polimorfismo e Construtores

Computação II - Java Prof. Adriano Joaquim de Oliveira Cruz Aula Prática - Herança, Polimorfismo e Construtores Computação II - Java Prof. Adriano Joaquim de Oliveira Cruz Aula Prática - Herança, Polimorfismo e Construtores 1 Exercícios Exercício 1: Construtores e Testes Analise a classe Conta.java, mostrada na

Leia mais

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

Universidade da Beira Interior Cursos: Matemática /Informática e Ensino da Informática Folha 1-1 Introdução à Linguagem de Programação JAVA 1 Usando o editor do ambiente de desenvolvimento JBUILDER pretende-se construir e executar o programa abaixo. class Primeiro { public static void main(string[]

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 [email protected] 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

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

Sistemas Distribuídos Métodos de Invocação Remota IV. Prof. MSc. Hugo Souza

Sistemas Distribuídos Métodos de Invocação Remota IV. Prof. MSc. Hugo Souza Sistemas Distribuídos Métodos de Invocação Remota IV Prof. MSc. Hugo Souza Nesta aula, complementando os conceitos que vimos nas aulas anteriores [aula 15, aula 16 e aula 17], vamos praticar a segunda

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

Invocação de Métodos em Objectos Remotos

Invocação de Métodos em Objectos Remotos Invocação de Métodos em Objectos Remotos Invocações de métodos remotas e locais A remote invocation B local C invocation local E invocation local invocation D remote invocation F Page 1 1 Invocação de

Leia mais

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

Slide 1 Deitel/Deitel, 8e. Java Como programar Copyright 2010 Pearson Education Java Como Programar, 8/E Slide 1 Slide 2 Slide 3 Métodos genéricos e classes genéricas (e interfaces) permitem especificar, com uma única declaração de método, um conjunto de métodos relacionados ou, com

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

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

Invocação Remota MC704

Invocação Remota MC704 Invocação Remota MC704 Aplicações distribuídas Aplicação distribuída: conjunto de processos que cooperam entre si para prover um serviço ou realizar uma computação normalmente processos precisam invocar

Leia mais

Sintaxe Básica de Java Parte 1

Sintaxe Básica de Java Parte 1 Sintaxe Básica de Java Parte 1 Universidade Católica de Pernambuco Ciência da Computação Prof. Márcio Bueno [email protected] Fonte: Material da Profª Karina Oliveira Estrutura de Programa Um programa

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 [email protected] Fonte: Material da Profª Karina Oliveira Modificadores de Visibilidade Especificam

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

APÊNDICE A EXEMPLO DE APLICAÇÃO

APÊNDICE A EXEMPLO DE APLICAÇÃO APÊNDICE A EXEMPLO DE APLICAÇÃO Para ilustrar os três métodos de distribuição de objetos apresentados nesta dissertação iremos, a seguir, mostrar um exemplo de implementação de uma aplicação. São apresentadas

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

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

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

Sistemas Distribuídos Métodos de Invocação Remota II. Prof. MSc. Hugo Souza

Sistemas Distribuídos Métodos de Invocação Remota II. Prof. MSc. Hugo Souza Sistemas Distribuídos Métodos de Invocação Remota II Prof. MSc. Hugo Souza Nesta aula, complementando os conceitos que vimos nas aulas anteriores [aula 15], vamos praticar a programação de laboratório

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

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

Curso de Java. Orientação a objetos e a Linguagem JAVA. TodososdireitosreservadosKlais

Curso de Java. Orientação a objetos e a Linguagem JAVA. TodososdireitosreservadosKlais Curso de Java Orientação a objetos e a Linguagem JAVA Roteiro A linguagem Java e a máquina virtual Objetos e Classes Encapsulamento, Herança e Polimorfismo Primeiro Exemplo A Linguagem JAVA Principais

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

Programação Orientada a Objetos (DPADF 0063)

Programação Orientada a Objetos (DPADF 0063) Programação Orientada a Objetos (DPADF 0063) Aula 5 Herança Universidade Federal de Santa Maria Colégio Agrícola de Frederico Westphalen Curso Superior de Tecnologia em Sistemas para Internet Prof. Bruno

Leia mais

Java Threads. Introdução

Java Threads. Introdução Java Threads [email protected] 1 Introdução O único mecanismo de concorrência suportado explicitamente pela linguagem Java é multi-threading. threading. Os mecanismos de gerenciamento e sicronização

Leia mais

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

Herança. Algoritmos e Programação II. Aula 5 Herança Algoritmos e Programação II Aula 5 Herança *Adaptado do material do Prof. Júlio Machado Herança Uma característica importante da programação orientada a objetos é permitir a criação de novas classes com

Leia mais

Tratamento de Exceções. Alberto Costa Neto DComp - UFS

Tratamento de Exceções. Alberto Costa Neto DComp - UFS Tratamento de Exceções Alberto Costa Neto DComp - UFS [ Conteúdo ] Introdução Hierarquia de Erros e Exceções Erros e Exceções predefinidos Bloco try Bloco finally Cláusula throws Lançando exceções Capturando

Leia mais

PADI 2015/16. Aula 1 Introdução à Plataforma.NET

PADI 2015/16. Aula 1 Introdução à Plataforma.NET PADI 2015/16 Aula 1 Introdução à Plataforma.NET 1 Sumário 1. Framework.NET Arquitectura 2. Linguagem C# 2.0 Sintaxe C# vs. Java vs. C++ 3. IDE: MS Visual Studio 2005 ou superior Ferramentas Console/Win

Leia mais

Programação Orientada a Objetos

Programação Orientada a Objetos Programação Orientada a Objetos Engenharia da Computação Professor: Rosalvo Ferreira de Oliveira Neto Dados Pessoais Rosalvo Ferreira de Oliveira Neto MSc. em ciência da computação (UFPE) [email protected]

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

Laboratório de Computação VI JAVA IDL. Fabricio Aparecido Breve - 981648-9

Laboratório de Computação VI JAVA IDL. Fabricio Aparecido Breve - 981648-9 Laboratório de Computação VI JAVA IDL Fabricio Aparecido Breve - 981648-9 O que é Java IDL? Java IDL é uma tecnologia para objetos distribuídos, ou seja, objetos em diferentes plataformas interagindo através

Leia mais

Módulo 02 Programação Orientada a Objetos. Última atualização: 07/06/2010

Módulo 02 Programação Orientada a Objetos. Última atualização: 07/06/2010 Módulo 02 Programação Orientada a Objetos Última atualização: 07/06/2010 1 Objetivos Definir conceitos de orientação a objetos: o abstração, encapsulamento, pacotes. Discutir reutilização de código em

Leia mais

Programação Orientada a Objetos (DPADF 0063)

Programação Orientada a Objetos (DPADF 0063) Programação Orientada a Objetos (DPADF 0063) Aula 6 Polimorfismo Universidade Federal de Santa Maria Colégio Agrícola de Frederico Westphalen Curso Superior de Tecnologia em Sistemas para Internet Prof.

Leia mais

Programação Estruturada. Programação Estruturada. Idéias Básicas da Programação Estruturada

Programação Estruturada. Programação Estruturada. Idéias Básicas da Programação Estruturada Programação Estruturada Programação Estruturada Paradigmas de Linguagens de Programação As linguagens desse paradigma são muitas vezes chamadas de linguagens convencionais, procedurais ou imperativas.

Leia mais

Relevância e Motivação. Programação Orientada a Objetos Utilizando Java. Qualidade do Software. Objetivos. Cancelamentos.

Relevância e Motivação. Programação Orientada a Objetos Utilizando Java. Qualidade do Software. Objetivos. Cancelamentos. Programação Orientada a Objetos Utilizando Java Pedro de Alcântara dos Santos Neto e-mail: [email protected] Home Page: http:// www.ufpi.br/pasn Relevância e Motivação Técnicas a serem utilizadas na prática

Leia mais

Objetivos: Sun recomenda que utilize o nome de domínio da Internet da empresa, para garantir um nome de pacote único

Objetivos: Sun recomenda que utilize o nome de domínio da Internet da empresa, para garantir um nome de pacote único Pacotes e Encapsulamento Prof. Bruno Gomes [email protected] Programação Orientada a Objetos Introdução Permite o agrupamento de classes em uma coleção chamada pacote Um pacote é uma coleção de classes

Leia mais

Sistemas Distribuídos

Sistemas Distribuídos Sistemas Distribuídos Comunicação Remota Gustavo Reis [email protected] 1 Comunicação entre processos está no coração de todo sistema distribuído. Não tem sentido estudar sistemas distribuídos

Leia mais

Prof. Jhonatan Fernando

Prof. Jhonatan Fernando Prof. Jhonatan Fernando Métodos Programação OO Instâncias de variáveis (objetos) Mensagens Classes Herança Polimorfismo Encapsulamento Abstração Programação Estruturada Procedimentos e funções Variáveis

Leia mais

Aula 3 Objeto atual com referencia THIS e Classes com Herança

Aula 3 Objeto atual com referencia THIS e Classes com Herança Aula 3 Objeto atual com referencia THIS e Classes com Herança Profº Msc. Alexsandro M. Carneiro Engenharia de Computação Tec. Análise e Des. De Sistemas Tópicos Abordados Controlee de Acesso Herança Definição:

Leia mais

INTRODUÇÃO AO C++ SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO

INTRODUÇÃO AO C++ SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO INTRODUÇÃO AO C++ SISTEMAS DE INFORMAÇÃO DR. EDNALDO B. PIZZOLATO Tópicos Estrutura Básica B de Programas C e C++ Tipos de Dados Variáveis Strings Entrada e Saída de Dados no C e C++ INTRODUÇÃO O C++ aceita

Leia mais