aula de introdução - java
DESCRIPTION
Aula de Introdução - JAVATRANSCRIPT
Lin
g. de
Pro
gra
maçã
o
OR
IEN
TA
DA
A O
BJE
TO
S
Tópicos abordados:
Introdução
Metodologia - Como trabalharemos
Revisão de conteúdo
Programação Orientada a Objetos
Introdução e conceito de
objetos
Classes e Métodos
construtores, destrutores,
polimorfismo, encapsulamento,
abstração e modularização.
Interação entre objetos.
Documentação
Pacotes.
Testes e depuração.
Interface gráfica (noções).
Persistência de dados.
Desenvolver o raciocínio lógico.
Comparar estruturas de dados e objetos
Discutir conceitos inerentes a construção de
algoritmos orientados a objetos
Identificar os principais conceitos relacionados a
orientação a objetos na linguagem de
programação utilizada.
Desenvolver algoritmos orientados a objetos,
baseando-se no domínio do problema e nas
operações que devem ser realizadas sobre ele
Aplicar os conceitos de orientação a objetos em uma
linguagem de programação
Desenvolver algoritmos orientados a objetos para
solução de problemas
Reconhecer o problema identificando os
componentes para desenvolvimento de algoritmos
orientados a objetos
Refletir sobre os problemas e ser criativos na busca
de soluções
Atividades em sala de aula
individuais e/ou em grupo.
Atividades extra-classe
individuais e/ou em grupo.
Avaliações em sala – 0 a 10 pontos
Um trabalho
individuais e/ou em grupo.
BlueJ
NetBeans
Maior capacidade de desenvolver soluções
computacionais para problemas.
Maior habilidade ao usar uma LP.
Maior capacidade para escolher LPs
apropriadas.
Maior habilidade para aprender novas LPs .
Maior habilidade para projetar novas LPs.
Etapas do Desenvolvimento de Software
Planejamento.
Especificação de Requisitos.
Análise.
Projeto.
Implementação .
Validação (Testes).
Implantação.
Manutenção.
Aplicações Científicas.
Aplicações Comerciais.
Inteligência Artificial.
Programação de Software Básico e Ferramentas de
Suporte a Programação.
Linguagens de Script.
Aplicações Web.
Legibilidade – Facilidade para se ler e entender um
programa.
Redigibilidade – Facilidade de redigir um programa.
Possibilita ao programador se concentrar nos algoritmos
e não na linguagem
Confiabilidade – mecanismos fornecidos pelas LPs para
incentivar a construção de programas confiáveis.
Tratamento de Exceções
Eficiência – programas mais ágeis
Facilidade de Aprendizado – programas fáceis de
aprender
Modificabilidade – facilidade de alteração de programas
Reusabilidade – facilidade de reutilização de código
Portabilidade – utilização em diferentes plataformas
O computador é
hardware que só entende operações muito básicas (zeros
e uns, processadas logicamente);
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;
Para facilitar
Usamos linguagens de programação menos complexa e
utilizamos um programa que transforme uma linguagem
em outra: um tradutor.
Existe duas maneiras de se traduzir um programa:
compilação e 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.
Compilação Maior eficiência
Problemas com portabilidade e depuração
Exemplo: C
Interpretação Pura Portabilidade e facilidade para depuração
Problemas com eficiência e maior consumo de memória
Raramente usada
Híbrido Une vantagens dos outros métodos
Exemplo: Java – o código intermediário é o bytecode e o seuinterpretador é o JVM (Java Virtual Machine)
Solução
(Computacional)
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)0101010
1001010
0101010
1010101
0101010
1001010
0101010
1010101
0101010
1001010
0101010
1010101
Dificuldades
semânticas
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.
As classes expressam grupos de objetos
PROGRAMAÇÃO ESTRUTURADA
Métodos Procedimentos e Funções
Instâncias de Variáveis Variáveis
Mensagens Chamadas a procedimentos e funções
Classes Tipos de Dados definidos pelo usuário
Herança -
Polimorfismo -
PROGRAMAÇÃO
ORIENTADA A OBJETOS
UNIDADE-SERRA
Uma classe é geralmente descrita como o modelo
ou a forma a partir do qual um objeto é criado.
Classe é um componente de programa que descreve a“estrutura” e o “comportamento” de um grupo de objetossemelhantes (CAMARÃO, 2003).
Objeto é uma extensão do conceito de objeto no mundoreal, em que se podem ter (relacionar) coisas tangíveis,um incidente (evento ou ocorrência) ou uma interação(transação ou contrato) (PUGA, 2003). É a criação deuma instância da classe (HORSTMANN, 2001).
A cada criação de um novo objeto pertencente a
uma mesma classe, chamamos de instância da
classe.
herança em orientação a objetos representa a implementação da generalização. Herança é o compartilhamento de atributos e operações entre
classes com base em um relacionamento hierárquico.
Ex: a subclasse Utilitário herda todos os atributos e operações da
superclasse Veículos.
UTILITÁRIOS PASSAGEIROS ESPORTE PASSEIO
VEÍCULOS
GE
NE
RA
LIZ
AÇ
ÃO
ES
PE
CIA
LIZ
AÇ
ÃO
Polimorfismo significa a capacidade de assumir
muitas formas.
permite que um objeto assuma um comportamento diferente daquele
definido em sua classe.
Encapsulamento (ocultamento de informações).
consiste na separação entre os aspectos externos de um
objeto, acessíveis por outros objetos.
Mensagens e métodos
As operações (serviços) que um objeto oferece são
chamadas de métodos. A solicitação de operações entre
objetos é feita através de mensagens.
Com o encapsulamento, não é permitido acessar
diretamente as propriedades de um objeto, é preciso
operar por meio de métodos
Cite 3 propriedades desejáveis em linguagens de
programação.
Em que campos de trabalho podemos utilizar as
linguagens de programação.
Explique com suas palavras o que voce entendeu
sobre tradução híbrida.
O que é uma classe?
O que é herança?
Uma linguagem de programação;
Um software distribuído pela Sun Microsystems;
Uma ilha da Indonésia.
Mantida por uma comunidade.
Uma especificação criada pela SUN, entretanto a
linguagem Java é Mantida pelo Java Comunity
Proccess (JCP) que reune experts em Java,
empresas e universidades que por meio de
processos democráticos definem a evolução da
linguagem.
Linguagem concebida para a utilização em
pequenos dispositivos eletrônicos.Em 1995, a Sun anuncia o Java como uma nova
plataforma de desenvolvimento.
Java, graças a um café;
Nascem as Applets, Java é incluída no Netscape,
disponibilizada ao público e deslancha;
Java hoje é utilizada em diversas áreas, desde
aplicativos corporativos, controle de servidores www
etc.
Java fará 15 anos em 2010.
Facilidade de aprendizado;
Legibilidade;
Redigibilidade;
Confiabilidade;
Eficiência;
Código reutilizável;
Flexibilidade;
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;
Baseada na Máquina Virtual Java (JVM);
Linguagem Java é a parte central da plataforma.
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;
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.
Orientada a Objetos.Multithreading.Suporte a comunicação.Acesso remoto a banco de dados.
Baseada em C++:
Sintaxe semelhante;
Porém mais simples.
Portabilidade (multiplataforma):
Compilação para bytecode e interpretação na JVM;
Confiável:
Verificações na compilação e execução;
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).
Projetada para ambientes distribuídos:
Suporte de alto nível para construção de aplicações em
rede (sockets, RMI, etc.);
Segura:
Verificações em tempo de execução;
Verificação de bytecode;
Possui bom desempenho: Linguagens híbridas não têm o mesmo desempenho de
linguagens compiladas;
No entanto, existem diversas otimizações, com melhorias a
cada nova versão;
Facilita a programação concorrente: Dispõe de elementos que facilitam a programação de
sistemas com uso intensivo de threads paralelas.
Código Java
Compilador
Byte Code Java
VM Linux VM Microsoft VM Celular
SO Linux SO Microsoft SO Celular
Ambiente
de Desenvolvimento
Distribuição
Ambiente de Execução
Java é distribuída em três edições:
Java Standard Edition (Java SE);
Java Enterprise Edition (Java EE);
Java Mobile Edition (Java ME).
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.
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).
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).
AWT/Swing: interfaces gráficas;
JDBC: acesso a bancos de dados;
JNDI: acesso a servidores de nomes;
RMI: invocação remota de métodos ;
I/O: entrada e saída (arquivos);
Math: cálculos matemáticos;
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;
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.;
Componentes gerenciados integrados a outras
tecnologias Java EE para prover acesso remoto,
persistência e transações transparentes, etc.
RMI/IIOP e Java IDL: conectividade;
JTA: transações em bancos de dados;
JMS e JavaMail: envio de mensagens;
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.
Conteúdo oficial do Java – http://java.sun.com
Desenvolvimento Orientado a Objetos com Java
Slides de Vítor Souza, baseados na apostila de
Flávio M. Varejão .
Livro: Programação de softwares em Java – Érico
Casella tavares de Mattos.