Aula de Introdução - JAVA

Preview:

DESCRIPTION

Aula de Introdução - JAVA

Citation preview

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

ÃO

ES

PE

CIA

LIZ

Ã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.