Capítulo 1 Introdução



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

Orientação a Objetos com Java

Desenvolvimento Web TCC Turma A-1

1 Introdução. Desenvolvimento OO com Java. Vítor E. Silva Souza ~ vitorsouza

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

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

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

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

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

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

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

Programação Orientada a Objetos

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

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

Visão Geral da Plataforma Java. Robinson Castilho - JUGMS castilho@bacarin.com.br

PROGRAMAÇÃO ORIENTADA A OBJETOS EM JAVA*

Programação Orientada a Objetos (DPADF 0063)

CURSO DE PROGRAMAÇÃO EM JAVA

PROGRAMAÇÃO JAVA. Parte 1

Dados em Java. Introdução

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

Objetivos do Curso. Você será capaz de:

Introdução à Linguagem Java

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

Daniel Wildt FACENSA Grupo de Estudos Java - FUJA Slide: 1

[Desenvolvimento OO com Java] O que é Java?

Desenvolvimento OO com Java O que é Java

[Desenvolvimento OO com Java] O que é Java?

Linguagens de. Aula 02. Profa Cristiane Koehler

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

Java Básico. Aula 1 por Thalles Cezar

Instalando o J2SE 5.0 JDK no Windows 2000/XP

ENTERPRISE JAVABEANS 3. Msc. Daniele Carvalho Oliveira

Prof. Esp. Adriano Carvalho

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

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

Programação de Computadores II: Java. / NT Editora. -- Brasília: p. : il. ; 21,0 X 29,7 cm.

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

UFG - Instituto de Informática

J2EE TM Java 2 Plataform, Enterprise Edition

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

Linguagem de Programação Orientada a Objeto. Introdução a Orientação a Objetos Professora Sheila Cáceres

Lógica de Programação

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

Sistemas Operacionais

Um pouco do Java. Prof. Eduardo

Capítulo 8. Software de Sistema

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

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

Fonte (livro-texto): Conceitos de Linguagens de Programação, 4ed. Robert W. Sebesta

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

Java. Guia do Programador. Peter Jandl Junior. Novatec

Orientação a Objetos e a Linguagem Java

Sistemas Operacionais. Prof. M.Sc. Sérgio Teixeira. Aula 05 Estrutura e arquitetura do SO Parte 2. Cursos de Computação

4 Estrutura do Sistema Operacional Kernel

Laboratório I Aula 2

PROGRAMA DE DISCIPLINA

Capítulo 1. Introdução. 1.1 Linguagens. OBJETIVOS DO CAPÍTULO Ao final deste capítulo você deverá ser capaz de:

IIH Introdução à Informática e Hardware

Programação Orientada a Objetos

FundamentosemInformática

LINGUAGEM DE PROGRAMAÇÃO JAVA

ESTUDO DE CASO WINDOWS VISTA

PROGRAMAÇÃO PARA SERVIDOR INTRODUÇÃO EM SISTEMAS WEB. Prof. Dr. Daniel Caetano

Organização e Arquitetura de Computadores I. de Computadores

Qualidade de Software

1. Apresentação Objetivos

Palestrante. Alexandre Faria

Sistemas Distribuídos

UNIVERSIDADE FEDERAL DA BAHIA INSTITUTO DE MATEMÁTICA CIÊNCIA DA COMPUTAÇÃO LINGUAGENS PARA APLICAÇÃO COMERCIAL. Java Peristence API 1.

Programação Orientada a Objetos

Java Linguagem de programação

SISTEMAS OPERACIONAIS. Maquinas Virtuais e Emuladores

Aula teórica 3. Tema 3.Computadores e linguagens Linguagens de Programação Compilação e linkagem LP Java. Preparado por eng.

Aspectos de Segurança em Programação com Java

Adriano Reine Bueno Rafael Barros Silva

Arquitetura de Computadores. Introdução aos Sistemas Operacionais

Marcus Vinicius Cruz Xavier. Rascunho do trabalho de conclusão de curso

Java Linguagem de programação

Interface Homem Máquina para Domótica baseado em tecnologias Web

Fundament n os s da platafo f rm r a. NE N T André Menegassi

Universidade Federal de Uberlândia

Sobre o Professor Dr. Sylvio Barbon Junior

Sistemas Operacionais Aula 03: Estruturas dos SOs. Ezequiel R. Zorzal

Tecnologia Java. Helder darocha

PROGRAMA DE DISCIPLINA

Virtualização Gerencia de Redes Redes de Computadores II

Objetivos: Entender o funcionamento dos programas Java via linha de comando

Banco de Dados de Músicas. Andre Lima Rocha Campos Osório Pereira Carvalho

Programação online em Java

MAGREGISTER 1.0: GERADOR DE INTERFACES DE COLETAS DE DADOS PARA PDA S. Acadêmico: Gilson Chequeto Orientador: Adilson Vahldick

Programação para Internet II

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

Sistema Operacional Correção - Exercício de Revisão

DESENVOLVENDO APLICAÇÃO UTILIZANDO JAVA SERVER FACES

Prof. Marcos Ribeiro Quinet de Andrade Universidade Federal Fluminense - UFF Pólo Universitário de Rio das Ostras - PURO

Transcrição:

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 1 Introdução

Licença para uso e distribuição Este material está disponível para uso nãocomercial e pode ser derivado e/ou distribuído, desde que utilizando uma licença equivalente. Atribuição-Uso Não-Comercial- Compatilhamento pela mesma licença, versão 2.5 http://creativecommons.org/licenses/by-nc-sa/2.5/deed.pt Você pode copiar, distribuir, exibir e executar a obra, além de criar obras derivadas, sob as seguintes condições: (a) você deve dar crédito ao autor original, da forma especificada pelo autor ou licenciante; (b) você não pode utilizar esta obra com finalidades comerciais; (c) Se você alterar, transformar, ou criar outra obra com base nesta, você somente poderá distribuir a obra resultante sob uma licença idêntica a esta. 2

Sobre o curso Aulas expositivas; Exercícios de fixação; Trabalho prático como avaliação ao final; Conteúdo: Introdução Tipos, variáveis e operadores Estruturas de controle Programação básica Classes e objetos Reuso de classes Polimorfismo RTTI e Interfaces Classes Internas Exceções Arquivos e Streams Utilitários Tipos Genéricos 3

Sobre o material do curso Apostila e exercícios: Autoria de Flávio M. Varejão (fvarejao@inf.ufes.br); Colaboração de Berilhes Garcia e Rodrigo Pessoa (capítulos 1 a 6). Slides: Autoria de Vítor Souza (vitorsouza@gmail.com); Baseado no conteúdo da apostila. 4

Sobre os alunos Assume-se que os alunos: Sabem o básico sobre lógica de programação; Conhecem alguma linguagem de programação; Não sabem nada sobre Java. Recomenda-se aos alunos: Perguntar SEMPRE que houver dúvida; Estudar a apostila em casa; Fazer todos os exercícios; Participar de um JUG. 5

Sobre o instrutor Formação: Graduação em Ciência da Computação, com ênfase em Engenharia de Software, pela UFES; Bolsista de Mestrado em Informática na UFES. Java: Desenvolvedor Java desde 1999; Especialista em desenvolvimento Web; JUG Leader do ESJUG. Profissional: Professor substituto no DI / UFES. 6

Objetivos do curso Tornar os alunos programadores capazes de: Entender o paradigma orientado a objetos e construir soluções neste paradigma; Utilizar Java para criar programas orientados a objeto, utilizando conceitos básicos e avançados da plataforma; Ler e entender programas em Java escritos por outros programadores. 7

Por que Orientação a Objetos? Padrão para desenvolvimento de sistemas; Vantagens sobre paradigma estruturado: Abstração mais próxima do mundo real; Foco na reusabilidade; Maior manutenibilidade; Maior grau de qualidade da solução final. 8

Por que Java? Uma das linguagens OO mais usadas; Características de Java: Simples, porém versátil, robusta e muito segura; Portável (independente de sistema operacional); Gratuita e com código disponível para consulta; Dirigida por uma especificação aberta; Popular, rodeada por uma comunidade muito ativa; De alta aceitação e com suporte da indústria; Muitas ferramentas disponíveis; Muita documentação disponível. 9

O que é Java? Uma tecnologia; Uma linguagem de programação; Uma plataforma de desenvolvimento; Um software distribuído pela Sun Microsystems; Um ambiente de execução de programas; Uma ilha da Indonésia. 10

Java como linguagem de programação É o principal foco deste curso; Para entendermos e avaliarmos melhor Java como linguagem, veremos alguns conceitos da área de LP: Propriedades desejáveis de LPs; Tradução de programas; Alocação de memória; Abstração. 11

Propriedades desejáveis em LPs Foco no programador e não no programa; Legibilidade; Redigibilidade; Confiabilidade; Eficiência; Facilidade de aprendizado; Reusabilidade de código; Flexibilidade; Harmonia com a metodologia de projeto. 12

Funcionamento das linguagens O computador é um hardware que só entende operações muito básicas (zeros e uns); Programa executável = coleção de instruções em linguagem de máquina; Criar programas em linguagem de máquina é extremamente difícil e improdutivo; Usamos linguagens de programação de alto nível; Precisamos de um programa que transforme uma linguagem em outra: um tradutor. 13

Tradução de programas Existe duas maneiras de se traduzir um programa: compilação e interpretação. Compilação: Compilador Código-fonte Programa Executável 14

Tradução de programas Interpretação: Máquina Virtual Interpretador Código-fonte 15

Compilação x Interpretação Compilação: Execução mais rápida; Somente o executável é carregado em memória. Interpretação: Portabilidade. Compilação + Interpretação = Híbrido Une as vantagens de ambos. 16

Tradução Híbrida Forma utilizada por Java: Máquina Virtual Java Código-fonte Interpretador Compilador Java Código Intermediário (byte code) 17

Alocação de memória Estratégias de alocação: Alocação estática; Alocação dinâmica. Ponteiros z 19 y 9 x 10 a 9 b 10 f p a b c Pilha Monte 18

Decisões sobre alocação de memória Qual estratégia utilizar? Por que usar pilha e monte? Modelo de memória ALGOL-like. Quem é responsável pela alocação? O programador (mais controle); A própria linguagem (mais facilidade). O que o programador pode fazer com ponteiros? Aritmética de ponteiros; Ponteiros somente como referências. 19

Abstração Conceito fundamental em LPs: Linguagem de máquina abstrai o hardware; Linguagem de alto nível abstrai a de máquina; Etc. O objetivo é escrever as soluções em termos cada vez mais próximos do mundo real. Problema (Mundo Real) Desenvolvimento Gap Semântico Solução (Mundo Computacional) 20

Abstração e Orientação a Objetos Dentre os paradigmas existentes, a Orientação a Objetos destaca-se pelo nível de abstração: Elementos do mundo real são modelados como objetos no mundo computacional; Objetos possuem propriedades e comportamento, assim como no mundo real; O código expressa a solução em termos mais próximos do problema. 21

Para um estudo mais aprofundado... Linguagens de Programação Conceitos e Técnicas Editora Elsevier (Campus); Coleção Campus SBC; Flávio Miguel Varejão; 2004. 22

História de Java 1995: Patrick Naughton e Sun Microsystems; Projeto Green busca por inovação: *7; James Gosling e a linguagem Oak; Projeto Green muda de rumo depois que *7 não deslancha: a aposta é na Internet; Oak vira Java, graças a um café; Nascem as Applets, Java é incluída no Netscape, disponibilizada ao público e deslancha; Java fez 10 anos em 2005. 23

A plataforma Java Plataforma = SO + Hardware: Windows + PC (Intel / AMD); Linux + PC; MacOS X + Macintosh. Java situa-se um nível acima do SO, formando uma nova plataforma de computação: Portável ( WORA - Write Once Run Anywhere); Baseada na Máquina Virtual Java (JVM); Linguagem Java é a parte central da plataforma. 24

Características de Java Orientada a objetos: Quase pura, pois possui tipos primitivos. Baseada em C++: Sintaxe semelhante; Porém mais simples. Portável: Compilação para bytecode e interpretação na JVM; Especificação rígida (JCP). 25

Características de Java Confiável: Verificações na compilação e execução; Incentiva-nos a escrever códigos melhores; Não há aritmética de ponteiros, que são tratados como referências a objetos; A gerência de memória é feita pela JVM (coletor de lixo), facilitando a tarefa do programador. Dinâmica: Classes são carregadas sob demanda (class loader). 26

Características de Java Projetada para ambientes distribuídos: Suporte de alto nível para construção de aplicações em rede (sockets, RMI, etc.); Com carregamento dinâmico, classes podem ser obtidas da rede e acionadas em tempo de execução; The network is the computer. Segura: Verificações em tempo de execução; Verificação de bytecode; Modelo sandbox (caixa de areia); Assinatura digital e criptografia. 27

Características de Java Possui bom desempenho: Linguagens híbridas não têm o mesmo desempenho de linguagens compiladas; No entanto, existem diversas otimizações (ex.: JIT), com melhorias a cada nova versão; Em última instância, integra-se com códigos em C. Facilita a programação concorrente: Dispõe de elementos que facilitam a programação de sistemas com uso intensivo de threads paralelas. 28

Edições de Java Java é distribuída em três edições: Java Standard Edition (Java SE); Java Enterprise Edition (Java EE); Java Mobile Edition (Java ME). 29

Java SE Ferramentas de desenvolvimento e API núcleo da plataforma (base para as demais); Permite o desenvolvimento de aplicações desktop, com interface gráfica, acesso à bancos de dados, I/O, acesso à rede, etc.; Dividida em: JDK = Java Development Kit; JRE = Java Runtime Environment. 30

Java Development Kit Somente para programadores; Contém: Ferramentas de desenvolvimento; Ambiente de execução (JRE); API Java SE (compilada e código-fonte); Programas de demonstração; Bibliotecas adicionais; Documentação (obtida separadamente). 31

Java Runtime Environment Necessária para rodar programas Java (bytecodes compilados); É a única parte da plataforma Java que os clientes precisam instalar; Em alguns SOs já vem instalada (ex.: MacOS X); A Sun provê suporte oficial às plataformas Windows, Solaris e Linux; Há suporte não-oficial a diversas outras plataformas (a Apple suporta a plataforma Mac). 32

A API Java SE 33

A API Java SE AWT/Swing: interfaces gráficas; Java2D: desenho; JDBC: acesso a bancos de dados; JNDI: acesso a servidores de nomes; RMI: invocação remota de métodos ; i18n: suporte à internacionalização; I/O: entrada e saída (arquivos); JNI: integração com linguagens nativas; Math: cálculos matemáticos; 34

A API Java SE Networking: transmissão de dados via rede; Security: segurança; Serialization: persistência por serialização; XML: processamento de XML e afins; Lang & Util: núcleo da linguagem, utilitários; Concurrency: programação concorrente; Logging: funções de relatório (log); Reflection: RTTI (reflexão, introspecção). 35

Java EE Permite o desenvolvimento de aplicações corporativas: Multi-camadas, distribuídas, centradas em servidores, altamente robustas, estáveis e escaláveis. Inclui as especificações para desenvolvimento Web: Servlets, JSP, Web Services, JSF, etc.; Inclui especificações da plataforma Enterprise Java Beans (EJB): Componentes gerenciados integrados a outras tecnologias Java EE para prover acesso remoto, persistência e transações transparentes, etc. 36

Java EE Outras tecnologias relacionadas: RMI/IIOP e Java IDL: conectividade; JDNI: servidor de nomes; JAC e JNI: acesso a sistemas legados; JAAS: segurança; JTA: transações em bancos de dados; JMS e JavaMail: envio de mensagens; E tudo o mais que temos no Java SE... 37

Java ME Permite o desenvolvimento de aplicações para dispositivos móveis: Telefones celulares; PDAs (Palm, ipaq, etc.); Dispositivos embarcados (embedded); Etc. Java Card: aplicações para Smart Cards e outros dispositivos muito limitados. 38

Um primeiro programa Escreva o seguinte programa: Comentários /* Meu primeiro programa. */ public class Eco { // Método principal. public static void main(string[] args) { for (int i = 0; i < args.length; i++) System.out.print(args[i] + " "); System.out.println(); } Comandos terminam com ; } Salve como Eco.java (case sensitive). Bloco de instruções 39

Compilando o programa Código fonte: Eco.java public class Eco { /*... */ } Bytecode: Eco.class javac Eco.java ca fe ba be 00 00 00 31 00 1d 0a 00 06 00 0f 09 00 10 00 11 08 00 12 0a 00 13 00 14... 40

Executando o programa java Eco Alô Class Loader Java Virtual Machine (JVM) Classe remota? N S Ambiente de Execução Bytecode verifier ca fe ba be 00 00 00 31 00... Bytecode Interpretador JIT Compiler Código Nativo Sistema Operacional / Hardware 41

Programas Java Um programa Java é uma classe pública com o método main(), como no nosso exemplo; O nome do arquivo deve coincidir com o nome da classe que possui o método main(); Pode haver mais de uma classe no mesmo arquivo fonte, mas somente uma pode ser pública; Veremos estes conceitos ao longo do curso. 42

IDEs Ambientes integrados de desenvolvimento facilitam o trabalho de programação: Eclipse (http://www.eclipse.org); NetBeans (http://www.netbeans.org); IntelliJ IDEA (http://www.jetbrains.com/idea); JBuilder (http://www.borland.com/br/products/jbuilder/); Dentre outras... 43

Recursos para aprendizado de Java Comunidades virtuais: http://www.portaljava.com http://www.guj.com.br http://www.javafree.com.br JUGs Grupos de Usuários Java http://esjug.dev.java.net Revistas: Mundo Java; Java Magazine. Livros. 44