View
108
Download
8
Category
Preview:
DESCRIPTION
Introdução aos computadores e à World Wide Web
Citation preview
cicero@engcomp.uema.br
LPOO - Linguagem de Programação Orientada
a Objetos
1
cicero@engcomp.uema.br22
Capítulo 1Introdução aos
computadores e à World Wide Web
cicero@engcomp.uema.br
Conteúdo programático
• Introdução aos computadores, à Internet e á WWW• Exercícios de autorrevisão
3
cicero@engcomp.uema.br
Recursos para o aluno
Java SE Development Kit (JDK) 6 Update 11
IDE do Eclipse para desenvolvedores Java EE versão 3.4.1
NetBeans IDE Version 6.5 All Bundle
MySQL 5.0 Community Server
MySQL Connector/J
4
Fonte: Google imagem
cicero@engcomp.uema.br
Boletim Deitel Buzz On-line gratuito via e-mail
• Anúncios Resource Center (comentários sobre tendências e desenvolvimento do setor);• Links para artigos gratuitos;• Agendas de lançamento de produtos;• Erratas;• Depoimentos de leitores e usuários;• www.deitel.com/ResourceCenters.html
Cadastro:www.deitel.com/newsletter/subscribe.html
5
cicero@engcomp.uema.br
Antes de você começar
CD-ROM\Welcome.htm para abrir a interface do CD Student, conforme ilustra a figura abaixo. Depois, clique no link Software para examinar os requisitos de sistema de hardware e software.
6
cicero@engcomp.uema.br7
Instalando o software
O CD contém o software necessário para compilar e executar os exemplos do curso na plataforma Windows. Para outras plataformas, tem-se que baixar o software.
Plataformas Appledeveloper.apple.com/java/
Plataformas Linuxjava.sun.com/javase/downloads/index.jsp
cicero@engcomp.uema.br8
Fonte: Google imagem
cicero@engcomp.uema.br9
Introdução aos computadores, à Internet e à WWW
Ciências Naturais e
Exatas
Ciências Humanas
EngenhariasCiências da
Saúde
Fonte: Google imagem
cicero@engcomp.uema.br10
Introdução aos computadores, à Internet e à WWW
Fonte: Google imagem
cicero@engcomp.uema.br11
Introdução aos computadores, à Internet e à WWW
Fonte: Google imagem
cicero@engcomp.uema.br12
Computadores: hardware e software
HardwareSoftware
Fonte: Google imagem
cicero@engcomp.uema.br13
Unidades Lógicas do Computador
Unidade de entrada
Unidade de saída
Unidade de memória
ULACPU
cicero@engcomp.uema.br 14
Computação pessoal distribuída e computação cliente/servidor
IBM Personal ComputerFonte: Google imagem
Computação DistribuídaFonte: Google imagem
Estações de TrabalhoFonte: Google imagem
Arquitetura Cliente/ServidorFonte: Google imagem
cicero@engcomp.uema.br15
A Internet e a World Wide Web
Fonte: Google imagem
cicero@engcomp.uema.br16
Linguagens de máquina, linguagem assembly e linguagens de alto nível
Linguagens de máquina
Linguagens de assembly
Linguagens de alto nível
Tipos de linguagens
cicero@engcomp.uema.br17
Linguagem de máquina
INSTRUÇÃO EM LM
DESCRIÇÃO
+1300042774 adicionar o pagamento de horas extras à base de pagamentos e armazena o resultado como salário bruto.
+1400593419
+1200274027
cicero@engcomp.uema.br1818
Linguagem assembly
Linguagem assemblyUtiliza abreviações em inglês para representar
operações elementares. Programas tradutores chamados assemblers foram desenvolvidos para converter os primeiros programas de linguagem assembly em linguagem de máquina.Exemplo:
INSTRUÇÃO EM LA
DESCRIÇÃO
load basepay adicionar o pagamento de horas extras à base de pagamentos e armazena o resultado como salário bruto.
add overpay
store grosspay
cicero@engcomp.uema.br191919
Linguagens de alto nível
grossPay = basePay + overTimePay
cicero@engcomp.uema.br20
Linguagens de alto nível
C
C++
LANs
Visual Basic
Visual C++
Java
C#
cicero@engcomp.uema.br21
História do Java
� 1991 – Início do Green Project, na Sun Microsystems, foi o berço do Java (uma linguagem de programação orientada a objetos). Os mentores do projeto eram Patrick Naughton, Mike Sheridan e James Gosling.
James A. Gosling, pai da linguagem de programação JAVAFonte: Wikipédia
Objetivos do Green Project
� Não criar uma nova LP;
� Antecipar e planejar a “próxima onda” do
mundo digital;
� Acreditavam que haveria uma convergência
dos computadores com os equipamentos e
eletrodomésticos comumente usados pelas
pessoas no seu dia-a-dia.
� Gerou o *7 (StarServen) – controle
remoto com uma interface gráfica
touchscreen.
� Criado um mascote, o DUKE –
guia virtual que ajudava e ensinava o usuário a utilizar o equipamento.DUKE, mascote do
Java
Fonte: Wikipédia
cicero@engcomp.uema.br2222
História do Java
A nova linguagem de programação para o *7
� OaK (carvalho, uma árvore que James A. Gosling
podia observar quando olhava pela sua janela).
� Próximo passo: Encontrar um mercado para o *7� Controlar televisões e vídeo por demanda com equipamento� Internet (OaK foi adaptado para a rede mundial de computadores
� Maio de 1995 – nova versão do OaK que foi rebatizada para Java
� Aplicações poderiam ser executadas dentro dos navegadores nos Applets Java
cicero@engcomp.uema.br232323
História do Java
� 2004 – Java atingiu a marca de 3 milhões de desenvolvedores em todo mundo e atualmente é uma referência no mercado de desenvolvimento de software para:
� Internet� Browsers (navegadores)� Mainframes� Sistemas Operacionais� Celulares� Palmtops� Cartões inteligentes (smart card)
cicero@engcomp.uema.br24
Bibliotecas de classe do Java
Programas Java consistem em partes chamadas classes. As classes incluem partes chamadas métodos que realizam tarefas e retornam informações quando as tarefas são concluídas.
� Pode-se criar cada parte necessária para formar os programas Java. Entretanto, a maioria dos programadores Java tira proveito das ricas coleções de classes existentes nas bibliotecas de classe Java, que também são conhecidas como Java APIs (do inglês Application Programming
Interfaces).
� Própria linguagem Java – programar as próprias classes� Classes nas extensas bibliotecas de classe Java
cicero@engcomp.uema.br25
Documentação da Java API
http://www.oracle.com/technetwork/java/javase/documentation/index.html
http://download.oracle.com/javase/
Observação de engenharia de software I.IUtilize uma abordagem de bloco de construção para criar programas. Evite reinventar a roda – utilize partes existentes onde quer que possível. Essa reutilização de software é um benefício fundamental da programação orientada a objetos.
cicero@engcomp.uema.br26
Ambiente típico de desenvolvimento Java
Programas Java
Edição{1}
Fases
Compilação{2}
Carregamento{3}
Verificação{4}
Execução{5}
cicero@engcomp.uema.br27
Fase de Edição
� Editar um arquivo (código-fonte) com um programa editor;� Salva em disco secundário com extensão .java (contém o código-fonte Java.
Exemplos de editores Java� vi e emacs (Linux)� Notepad (Windows)� Ediplus� TextPad� jEdit
Disco*.java
cicero@engcomp.uema.br28
Para desenvolvimento de sistemas de informações substanciais
Ambientes de Desenvolvimento Integrado (Integrated
Development Environments – IDEs)
NetBeans – www.netbeans.orgEclipse – www.eclipse.org
cicero@engcomp.uema.br2929
Fase de Compilação
� Código-fonte → Código de máquinajavac Welcome.java → Welcome.class (versão
compilada do programa);� Compilador Java converte o código-fonte Java em bytecodes
que representam as tarefas a serem executadas na fase de execução (fase 5);� Os bytecodes são executados pela Java Virtual Machine
(JVM) – uma parte do JDK (Java Development Kit) e a base da plataforma Java
cicero@engcomp.uema.br30
JVMAplicativo de
software
Simula um computador, mas oculta o SO e o hardware subjacentes dos programas que interagem com ela.
.NETda Microsoft
Utiliza uma arquitetura de máquina virtual semelhante.
Ao contrário da LM, que é dependente do hardware específico de computador, os bytecodes são independentes de plataforma, ou seja, eles são portáveis.
executados
cicero@engcomp.uema.br31
Fase de carregamento de um programa na memória
� A JVM armazena o programa na memória para executá-lo
Carregador de classe
Disco
.
.
.
Memória primária
O carregador de classe lê os arquivos .class que contém bytecodes a partir do disco e coloca esses bytecodes na memória
cicero@engcomp.uema.br32
Verificação de bytecode
� Enquanto as classe são carregadas, o verificador de bytecodes examina seus bytecodes para assegurar que eles são válidos e não violam restrições de segurança do Java.
Verificador de bytecodes
.
.
.
Memória primária O verificador de
bytecode confirma que todos os bytecodes são válidos e não violam restrições de segurança do Java.
cicero@engcomp.uema.br3333
Execução
� A JVM executa os bytecodes do programa, realizando assim as ações especificadas pelo programa.
Java Virtual Machine (JVM)
.
.
.
Memória primária Para executar o
programa, a JVM lê os bytecodes e os compila (isto é, traduz) no momento certo (ou Just-In-
Time – JIT) para uma linguagem que o computador possa entender.
JIT – ocorre a análise dos bytecodes à medida que eles são interpretados, procurando host spots (pontos ativos) – partes dos bytecodes que executam com freqüência.
cicero@engcomp.uema.br34
Estudo de caso de engenharia de software: introdução à tecnologia de objetos e à UML
•••• Orientação a objetos���� Uma maneira natural de pensar o mundo e escrever
programas de computador
• Design Orientado a Objetos���� Pensamento em orientação a objetos;���� Introduzir a Unified Modeling Language (UML) –
uma linguagem gráfica que permite projetar sistemas de software para utilizar uma notação padrão da indústria para representá-las.
•••• Introdução da terminologia e os conceitos de LPOO
cicero@engcomp.uema.br
3535
Estudo de caso de engenharia
de software
Analisar um típico documento de requisitos que descreve um sistema de software (o ATM) a
ser construído
Determinar os objetos necessários para implementar o
sistema
Determinar os atributos que os objetos terão
Determinar os atributos que os objetos terão
Determinar os comportamentos que esses objetos exibirão
Especificar como os objetos interagem para atender os requisitos de sistema
cicero@engcomp.uema.br36
Conceitos básicos da tecnologia de objetos
Objetos(Terminologia-chave da POO)
cicero@engcomp.uema.br37
Programas de computador
(aplicativos Java)
Compostos de muitos objetos de software
interativos
cicero@engcomp.uema.br38
Objetos(Terminologia-chave da POO)Animados inanimados
Objetos “vivos”
Se movem e fazem coisas
Não se movem por conta própriaObjetos de ambos
os tipos têm algo em comum –todos eles têm
atributos
Exibem comportamentos
Tamanho, forma, cor, peso, ...
Carro (acelera, freia, desvia)
Toalha (absorve água)
cicero@engcomp.uema.br39
Diferentes Objetos
Podem ter atributos
semelhantes
Podem exibir comportamentos
semelhantes
Bebês e adultos
Humanos e chimpanzés
Podemos fazer comparações
entre:
cicero@engcomp.uema.br40
O Desenho Orientado a Objetos (Object-
Oriented Design – OOD)� Modela software em termos semelhantes àqueles que as pessoas utilizam para descrever objetos do mundo real;� Tira proveito de relacionamentos de classe, em que os objetos de certa classe, como uma classe de veículos, têm as mesmas características – carros, caminhões, patins têm muito em comum;� Tira proveito dos relacionamentos de herança, dos quais as classes de objetos novas são derivadas absorvendo-se características de classes existente e adicionando-se características únicas dessas mesmas classes
� Um objeto de classe “conversível” certamente tem as características da classe mais geral “automóvel”, mas, mais especificamente, seu capô sobe e desce;� Fornece uma maneira natural e intuitiva de visualizar o processo de design de software – a saber, modelar objetos por seus atributos e comportamentos assim como descrevemos objetos do mundo real;� A OOD também modela a comunicação entre objetos
• Pessoas trocam mensagens entre si
� Um sargento manda um soldado permanecer em atenção;� Objetos também se comunicam via mensagens
�
cicero@engcomp.uema.br41
Um objeto conta
bancária
Pode receber uma mensagem para deduzir
seu saldo em certa quantia porque o cliente retirou
essa quantia em dinheiro((((((
Saldo + Saldo -
O Desenho Orientado a Objetos (Object-
Oriented Design – OOD)
cicero@engcomp.uema.br42
O Desenho Orientado a Objetos (Object-
Oriented Design – OOD)
� O OOD encapsula (isto é, empacota) atributo e operações(comportamentos) em objetos – os atributos e operações de um objeto estão intimamente ligados;� Os objetos têm a propriedade de ocultamento de informações
� Isso significa que podem saber como se comunicar com outros por meio de interfaces bem definidas, mas normalmente eles não têm permissão para saber como os outros objetos são implementados
� Os detalhes de implementação são ocultados dentro dos próprios objetos.
O que significa isso?
cicero@engcomp.uema.br43
� Podemos dirigir um carro sem conhecer os detalhes de como os motores, transmissões, freios e sistemas de escapamento funcionam internamente –contanto que saibamos utilizar o acelerador, o freio, a roda e assim por diante;� O ocultamento de informações é crucial à boa engenharia de software.
INTERFACESCARRO EM MOVIMENTO
cicero@engcomp.uema.br44
� Linguagens como Java são linguagens orientadas a objetos;� A programação nessa linguagem, chamada programação orientada a objetos (Object-Oriented Programming – OPP), permite-lhe implementar um design orientado a objetos como um sistema funcional;� Linguagens como o C, por outro lado, são procedurais, então a programação tende a ser orientada para a ação.
Linguagem C(a unidade de
programação é a função)
Grupos de ações que realizam alguma tarefa comum são reunidos em funções e as funções são agrupadas para formar programas.
Linguagem Java(a unidade de
programação é a classe)
A partir da qual os objetos por fim são instanciados(criados). Classes Java contêm métodos (que implementam operações e são semelhantes a funções na linguagem C) bem como campos (que implementam atributos).
cicero@engcomp.uema.br45
Programadores em Java concentram-se na criação de
classes.
Cada classe contém campos e o conjunto de métodos que manipulam os campos e
fornecem serviços aos clientes(isto é, outras classes que
utilizam a classe).
O programador utiliza classes existentes como blocos de
construção para construir novas classes
cicero@engcomp.uema.br
46
Classesx
Objetosy
y = f(x)
Plantas arquitetônicas
z
Casast
t = f(z)
� Assim como podemos construir muitas casas a partir de uma planta, podemos instanciar (criar) muitos objetos a partir de uma classe;� Não podemos fazer refeições na cozinha de uma planta; isso só é possível em uma cozinha real.
cicero@engcomp.uema.br47
classe X classe Y
classe Z classe T
� Classes diferentes podem se relacionar uma com as outras classes. Por exemplo, em um OOD de um banco, a classe “caixa de banco” precisa se relacionar com a classe “cliente”, a classe “gaveta de dinheiro”, a classe “cofre”;� Esses relacionamentos são chamados de associações.
cicero@engcomp.uema.br48
Um OOD de um Banco
Classe
banco
Classe caixa de banco
Classecliente
Classe
dinheiro
Classe gaveta de dinheiro
Classecofre A
SS
OC
IAÇ
ÕE
S
cicero@engcomp.uema.br49
Software
classe
classeclasse
classe
classe
classe
classe
classe
classeclasse
�Sistemas de software futuros reutilizem as classes;� Grupos de classes relacionadas são freqüentemente empacotados como componentes reutilizáveis;� A reutilização de classes existentes ao construir novas classes e programas economiza tempo e esforço
classe
cicero@engcomp.uema.br50
BENEFÍCIOS DA REUTILIZAÇÃO DE CLASSES EXISTENTES AO
CONSTRUIR NOVAS CLASSES E PROGRAMAS
Economia de tempo e esforço para escrever novos
programas
Ajuda a construir sistemas mais confiáveis e
eficientes� Passam por extensos testes;� Depuração;� Ajuste de desempenho
A REUTILIZAÇÃO
cicero@engcomp.uema.br51
Introdução à análise e desenho orientado a objetos (Object-Oriented Analysis and Design – OOAD)
� Logo estaremos escrevendo programas (aplicativos) em Java;� Como criar os códigos para esses programas? – ligar o computador e começar a digitar – abordagem funciona para pequenos programas, tais como:
� programa de impressão de texto;� exibindo texto com printf; � somando inteiros;� declarando uma classe com um método e instanciando
um objeto de uma classe;� decidir se o aluno estar ou não aprovado;� ...
cicero@engcomp.uema.br52
Introdução à análise e desenho orientado a objetos (Object-Oriented Analysis and Design – OOAD)
Criar um sistema de software para controlar
milhares de caixas eletrônicos (ATM) para um banco importante?
Ou se fôssemos trabalhar em uma equipe de 1.000
desenvolvedores de software para construir o próximo
sistema de controle de tráfego aéreo dos Estados Unidos?
1 2
Para projetos tão grandes e complexos, você não sentaria e simplesmente começaria a escrever programas
cicero@engcomp.uema.br53
Introdução à análise e desenho orientado a objetos (Object-Oriented Analysis and Design – OOAD)
Para criar melhores soluções devemos seguir um processo detalhado para analisar os requisitos de um projeto, isto é:
O que o meu sistema deve
fazer?
Para desenvolver um designque atenda a esses requisitos
Ajudar na decisão de como o sistema deve
fazê-lo (escrita do programa)
cicero@engcomp.uema.br54
Introdução à análise e desenho orientado a objetos (Object-Oriented Analysis and Design – OOAD)
O processo que envolve analisar e projetar o sistema de software de um ponto de vista orientado a objetos, ele é chamado de processo de análise e design orientado a objetos (Object-Oriented Analysis and Design – OOAD)
OOAD – termo genérico para o processo de análise
de um problema e desenvolvimento de uma
abordagem para resolvê-lo
cicero@engcomp.uema.br55
UML
Unified Modeling Language
Linguagem gráfica para comunicar os resultados de qualquer processo
OOAD
Fonte: Google imagens
12
3
Onde:1 – Grady Booch2 – James Rumbaugh3 - Ivar Jacobson
cicero@engcomp.uema.br56
O que é a UML?
Esquema de representação gráfica mais amplamente utilizado para modelar sistemas de software
orientado a objetos
É extensível
É capaz de ser aprimorada com novos recursos e é independente de qualquer processo OOAD particular.
cicero@engcomp.uema.br57
Para saber mais sobre a UML
www.omg.org www.deitel.com/UML
cicero@engcomp.uema.br58
Bibliografia básica
Recommended