Programação por Objectos. Java

Documentos relacionados
Programação por Objectos

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

Java - Introdução. Professor: Vilson Heck Junior. vilson.junior@ifsc.edu.br

ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento Eclipse Introdução à Linguagem de Programação JAVA

PROGRAMAÇÃO JAVA. Parte 1

ESQUEMA AULA PRÁTICA 1 Familiarização com o Ambiente de Desenvolvimento NetBeans Introdução à Linguagem de Programação JAVA

Orientação a Objetos com Java

Linguagem de Programação JAVA. Professora Michelle Nery Nomeclaturas

Desenvolvimento Web TCC Turma A-1

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

Introdução à Linguagem Java

Java Laboratório Aula 1. Divisões da Plataforma. Introdução a Plataforma Java. Visão geral da arquitetura da

Universidade Federal de Uberlândia

CURSO DE PROGRAMAÇÃO EM JAVA

Programação Orientada a Objetos

Prof. M.Sc. Fábio Procópio Prof. M.Sc. João Maria Criação: Fev/2010

Programação de Computadores II TCC Turma A-1

A Linguagem Algorítmica Estrutura de Repetição. Ex. 2

Java para Desktop. Introdução à Plataforma Java JSE

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

Programação online em Java

Linguagens de. Aula 02. Profa Cristiane Koehler

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

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

Programação Orientada a Objetos

Sintaxe Básica de Java Parte 1

Um pouco do Java. Prof. Eduardo

ESTRUTURA BÁSICA DE UM PROGRAMA JAVA

Fundamentos de Java. Prof. Marcelo Cohen. 1. Histórico

Capítulo 4. Packages e interfaces

Linguagem Java. Arquitetura e Ambiente de Desenvolvimento. Arquitetura e Ambiente de Desenvolvimento Prof. Anderson Augustinho Uniandrade

Bacharelado em Ciência e Tecnologia Processamento da Informação. Equivalência Portugol Java. Linguagem Java

Faculdade Instituto Educare - FIED Curso: Sistemas de Informação Disciplina: Linguagem de Programação I Prof.: Rhyan Ximenes rxbrito@gmail.

UNIVERSIDADE FEDERAL DO PARANÁ

Tecnologia Java. Daniel Destro do Carmo Softech Network Informática

AULA Uma linguagem de programação orientada a objetos

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

Programação Orientada a Objetos (DPADF 0063)

Marco Aurélio Uma Visão Geral Sobre Plataforma Java

Aula 2. Objetivos Conceitos; Instalação do Text Pad; Entendendo o código java do AloMundo1 Codificação do AloMundo2,AloMundo3 e AloMundo4.

2 Orientação a objetos na prática

INF1337 LINGUAGEM DE PROGRAMAÇÃO ORIENTADA A OBJETOS

Curso de Aprendizado Industrial Desenvolvedor WEB

P n o t n ifíci c a a Un U i n ve v r e si s da d d a e d e C a C t a ól ó ica c a d o d o R i R o o d e d e J a J n a e n i e ro o PU P C U -Ri R o

Adriano Reine Bueno Rafael Barros Silva

Organização de programas em Java. Vanessa Braganholo

Primeiro programa em Java (compilação e execução)

Capítulo 1. Introdução ao Java. Rui Rossi dos Santos Programação de Computadores em Java Editora NovaTerra

Programação de Computadores II TCC /Turma A 1

Faculdade Latino Americana Programação Orientada a Objetos II - 4º Período Ciências da Computação. REVISÃO POO Parte 01

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

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

Java 2 Standard Edition Como criar classes e objetos

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

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

Definições. Parte 02. Java Conceitos e. Desenvolvimento de Programação Orientada a Objetos. Prof. Pedro Neto

UNIVERSIDADE FEDERAL DO PARANÁ

INSTITUTO FEDERAL DE EDUCAÇÃO CIÊNCIA E TECNOLOGIA DE ALAGOAS CURSO TÉCNICO EM INFORMÁTICA DISCIPLINA:

Programação Orientada a Objetos em Java

Prof. Esp. Adriano Carvalho

Fundamentos de Programação II. Introdução à linguagem de programação C++

Java & OpenJDK. Thiago S. Gonzaga. Sun Campus Ambassador thiago.gonzaga@sun.com

Introdução à linguagem

Introdução a Java. Mário Meireles Teixeira. l Java é tanto uma linguagem de programação de alto nível quanto uma plataforma de desenvolvimento

Java Como Programar, 8/E

Programação Orientada a Objetos

INTRODUÇÃO AO JAVA PARA PROGRAMADORES C

JAVA. Fabrício de Sousa

PROGRAMAÇÃO ORIENTADA A OBJETOS EM JAVA*

Orientação a Objetos em Java. Leonardo Gresta Paulino Murta leomurta@ic.uff.br

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

Introdução. à Linguagem JAVA. Prof. Dr. Jesus, Edison O. Instituto de Matemática e Computação. Laboratório de Visão Computacional

A Linguagem Java. Apresentação. Java. A Linguagem da Internet

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

Programação por Objectos. Java

Linguagem de Programação Introdução a Linguagem Java

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

Capítulo 8. Software de Sistema

OOP - Java. Artur Duque Rossi Mestrado em Modelagem Computacional Universidade Federal de Juiz de Fora

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

Seminário - C# DSO II. Desenvolvimento de Sistemas Orientados a Objetos 2. Equipe: Diorges, Leonardo, Luís Fernando, Ronaldo

Orientação a Objetos

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

Programação por Objectos. Java

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

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

Técnicas de Programação II

Introdução à Linguagem Java. Departamento de Informática Prof. Anselmo C. de Paiva

LINGUAGEM DE PROGRAMAÇÃO JAVA

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

Invocação de Métodos Remotos

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

IFTO LÓGICA DE PROGRAMAÇÃO AULA 01

Algoritmos e Programação 2. Introdução à Programação Orientada a Objetos. Orientação a Objetos. O que é um paradigma de programação?

Reuso com Herança a e Composiçã

Noções sobre Objetos e Classes

Professor: Douglas Sousa Cursos de Computação

Introdução ao IDE Netbeans (Programação Java)

Curso Adonai QUESTÕES Disciplina Linguagem JAVA

Transcrição:

Programação por Objectos Java Parte 1: Introdução MEEC@IST Java 1/27

História versões (1) [1995] Versão 1.0, denominada Java Development Kit (JDK) 212 classes em 8 pacotes Lento, muitos bugs, mas com Applets [1997] Versão 1.1, denominada JDK 1.1 504 classes em 23 pacotes Melhoria na eficiência da JVM Principais extensões: classes aninhadas, JavaBeans, JDBC, RMI,... [1998] Versão 1.2, a partir daqui denominada Java 2 Platform (J2SE) 1520 classes em 59 pacotes JVM da Sun com compilador JIT Principais extensões: Swing, colecções,... Nome de código Playground MEEC@IST Java 2/27

História versões (2) [2000] Versão 1.3, denominada J2SE 1.3 1842 classes em 76 pacotes Melhoria na eficiência da JVM Nome de código Kestrel [2002] Versão 1.4, denominada J2SE 1.4 2291 classes em 135 pacotes Melhoria na eficiência da JVM Principais extensões: asserções, transferência de excepções, segurança e criptografia,... Disponibilizado em 3 plataformas: Java 2 Micro Edition (J2ME), para Telemóveis e PDAs Java 2 Standard Edition (J2SE), para desktop Java 2 Enterprise Edition (J2EE), para aplicações empresariais MEEC@IST Java 3/27

História versões (3) Desenvolvimento facilitado por ambientes poderosos: IDE (Integrated Development Environment) NetBeans, da Sun Eclipse, da IBM Nome de código Merlin [2004] Versão 5.0, denominada J2SE 5.0 3000 classes em 165 pacotes Principais extensões: genéricos, enumerados, tipos primitivos e classes de embrulho, número variável de argumentos Versão anteriormente numerada 1.5 Nome de código Tiger [2006] Versão 6.0, denominada J2SE 6.0 Principais extensões: XML, web services, Nome de código Mustang MEEC@IST Java 4/27

História versões (4) A versão J2SE 7 possui nome de código Dolphin, e está estimada para 2010. JVM com suporte para linguagens de programação dinâmicas Melhorias a nível do garbage collector Principais extensões: computação paralela em processadores multi-core, super pacotes,... MEEC@IST Java 5/27

Código fonte *.java javac Ambiente Java Passos na execução de programas Código bytecode *.class java Class loader Biblioteca classes J2SE JVM Interpretador JIT Sistema run-time Sistema operativo (Linux,Windows, ) Hardware (Intel x86, PowerPC, ) MEEC@IST Java 6/27

Plataforma Java (1) A tecnologia Java é distribuída para 3 plataformas: J2EE (Entreprise Edition), para desenvolvimento de aplicações empresariais. J2ME (Micro Edition), para dispositivos de capacidades limitadas (telemóveis e PDA s). J2SE (Standard Edition), para desktop e servidores. MEEC@IST Java 7/27

Plataforma Java (2) Debaixo da plataforma existem vários directórios: J2xx Runtime Environment (JRE): Interpretador JVM, classes de ambiente, Usado apenas para correr aplicações. J2xx Development Kit (JDK): JRE, compilador, classes utilitárias (Swing, ), Usado no desenvolvimento de aplicações. MEEC@IST Java 8/27

Plataforma Java (3) A API do Java 2 consiste em diversas classes distribuídas e organizadas em pacotes e subpacotes. Pacotes básicos: java.lang: classes de ambiente (importado automaticamente) java.util: classes utilitárias (tipos de dados, etc) java.io: classes para entrada e saída java.net: classes para uso em rede (TCP/IP) java.sql: classes para acesso via JDBC java.awt: interface gráfica universal nativa javax.swing: interface gráfica (mais leve que java.awt) Documentação: http://java.sun.com/reference/api/index.html J2SE 5.0: http://java.sun.com/j2se/1.5.0/docs/api/ MEEC@IST Java 9/27

Plataforma Java (4) MEEC@IST Java 10/27

Linguagem Java Particularidades da linguagem, comparativamente com C/C++: - Não há apontadores, mas sim referências. - Há new, mas não há free/delete (garbage collector). - Os parâmetros são passados por valor aos métodos. - Não há operator oveloading. - Não há herança múltipla de classes, apenas de interfaces. - Não há preprocessor nem header files. - Não há variáveis globais. - Linguagem fortemente tipada. - Declaração de variáveis em qualquer local dentro do método. - Não há goto, typedef, union, struct, ou enum. - Pode haver mais do que um método main (mas apenas um por classe). MEEC@IST Java 11/27

Java: referências (1) A linguagem Java não tem apontadores: Há referências, na realidade as referências são apontadores implícitos. Não há aritmética de ponteiros, os apontadores implícitos nunca são utilizados explicitamente como no C/C++. Todos os objectos em Java encontram-se na heap. MEEC@IST Java 12/27

Java: referências (2) Em Java os tipos primitivos (char, int, long, etc) são tratados de forma diferente dos objectos: Tipos primitivos: int ivar; Variável inteira denominada ivar. O valor da variável é de facto guardado num endereço de memória denominado ivar. Antes de qualquer atribuição guarda um valor dado por omissão: 0. MEEC@IST Java 13/27

Java: referências (3) Objectos: ContaBancaria cbvar; cbvar é uma referência para um objecto de tipo ContaBancaria. O endereço de memória denominado cbvar não guarda o objecto, mas sim uma referência para um objecto desse tipo que é por sua vez guardado algures em memória. Antes de qualquer atribuição guarda a referência para um objecto especial: null. MEEC@IST Java 14/27

Java: operador new Todos os objectos em Java são criados com o operador new: ContaBancaria cbvar1; cbvar = new ContaBancaria(); O new retorna uma referência (não um apontador). O programador não sabe qual o endereço onde o objecto se encontra. Não é necessário libertar memória. O Java verifica periodicamente cada bloco de memória obtido através de um new para verificar se ainda existe uma referência válida para ele (garbage collector). Evita memory leaks. MEEC@IST Java 15/27

Java: atribuição Na atribuição de referências passam a existir duas referências distintas para o mesmo objecto: ContaBancaria cbvar1, cbvar2; cbvar1 = new ContaBancaria(); cbvar2 = cbvar1; Ambas as variáveis referenciam exactamente o mesmo objecto. Se de ambas as variáveis se fizer um levantamento de 1000 então no final a conta bancária em questão terá menos 2000 do que inicialmente. MEEC@IST Java 16/27

Java: igualdade/equivalência (1) Tipos primitivos: == Diz se as duas variáveis comparadas têm valores iguais, tal como em C/C++. int ivar1 = 27; int ivar2 = ivar1; if (ivar1==ivar2) System.out.println( As variáveis são iguais! ); MEEC@IST Java 17/27

Java: igualdade/equivalência (2) Objectos: igualdade com == ContaBancaria cbvar1 = new ContaBancaria(); ContaBancaria cbvar2 = cbvar1; If (cbvar1==cbvar2) System.out.println( Os objectos são iguais! ); O operador == diz respeito à igualdade entre referências, i.e., se as referências referenciam o mesmo objecto (em C++ verifica se os dois objectos têm os mesmo dados). MEEC@IST Java 18/27

Java: igualdade/equivalência (3) Objectos: equivalência com equals ContaBancaria cbvar1 = new ContaBancaria(); ContaBancaria cbvar2 = new ContaBancaria(); If (cbvar1.equals(cbvar2)) System.out.println( Os objectos são equivalentes! ); O método equals diz respeito à equivalência entre objectos, i.e., se os dois objectos têm os mesmo dados. Por omissão o método equals devolve o mesmo que o operador ==, mas deve ser redefinido para devolver equivalência entre objectos sempre que tal for necessário. MEEC@IST Java 19/27

Java: parâmetros Em Java, os parâmetros são sempre passados por valor. O objecto nunca é copiado, existe apenas cópia da referência, referenciando ambas o mesmo objecto. void metodo1() { ContaBancaria cbvar = new ContaBancaria(); metodo2(); } void metodo2(contabancaria cbarg) {} As referências cbvar e cbarg referenciam o mesmo objecto. Em C/C++ os argumentos também são passados por valor, mas existe cópia integral do objecto. São utilizados ponteiros para fazer apenas cópia da referência, apontando ambas as referências para o mesmo objecto. Em C++ cbarg seria um novo objecto, copiado de cbvar. MEEC@IST Java 20/27

Java: entradas/saídas (1) Saídas: Qualquer tipo primitivo (números e caracteres), assim como objectos do tipo String, pode ser impresso no terminal da seguinte forma: System.out.print(var); System.out.println(var); O método print imprime o valor de var. O método println imprime o valor de var e muda de linha. Podem ainda ser utilizadas várias variáveis/literais separadas pelo operador +: System.ou.println( A resposta é + var); O resultado seria: A resposta é 15 (se o valor de var fosse 15). MEEC@IST Java 21/27

Java: entradas/saídas (2) Entradas: É necessário colocar no início do ficheiro fonte: import.java.io.*; É necessário adicionar throws IOException em todos os métodos que façam leitura do teclado e/ou de um ficheiro (inclusivé no método main). Da entrada é lido um objecto do tipo String. Se se pretende qualquer outro tipo, p.e., um caracatere ou um número, tem de se converter o objecto do tipo String para o tipo desejado. MEEC@IST Java 22/27

Java: entradas/saídas (3) Leitura de uma String do teclado: public static String getstring() throws IOException { InputStreamReader isr = new InputStreamReader(System.in); BufferedReader br = new BufferedReader(isr); String s = br.readline(); return s; } MEEC@IST Java 23/27

Java: entradas/saídas (4) Leitura de um char do teclado: public static char getchar() throws IOException { String s = getstring(); return s.charat(0); } O método charat retorna o caractere pedido do objecto String. Neste exemplo é pedido o primeiro caractere (no índice 0). A leitura da cadeia de caracteres, e o retorno de apenas o primeiro, evita que caracteres lidos fiquem no tampão de entrada (que poderiam causar problemas em leituras posteriores). MEEC@IST Java 24/27

Java: entradas/saídas (5) Leitura de um int/long do teclado: public static int getint() throws IOException { String s = getstring(); return Integer.parseInt(s); } public static long getlong() throws IOException { String s = getstring(); return Long.parseLong(s); } O método parseint/parselong, da classe Integer/Long, converte um objecto String num int/long. MEEC@IST Java 25/27

Java: entradas/saídas (6) Leitura de um double/float do teclado: public static int getdouble() throws IOException { String s = getstring(); Double d = Double.valueOf(s); return d.doublevalue(); } public static float getfloat() throws IOException { String s = getstring(); Float f = Float.valueOf(s); return f.floatvalue(); } O método ValueOf, da classe Double/Float, converte um objecto String num objecto Double/Float. O método doublevalue/floatvalue, da classe Double/Float, converte um objecto Double/Float num objecto double/float. MEEC@IST Java 26/27

Java: main Todas as classe numa aplicação podem ter um método main. public class HelloWorld { public static void main(string[] args) { System.out.println( Hello, world! ); } } Cada ficheiro tem apenas uma classe publica, e o nome do ficheiro deve ser exactamente o nome da classe com extensão.java. O interpretador Java virtual machine (JVM) executa sempre o método main da classe indicada na linha do comando. > javac HelloWorld.java > java HelloWorld > Hello world! MEEC@IST Java 27/27