Está en la página 1de 63

ENGENHARIA DE CONTROLE E AUTOMAÇÃO

Programação de Computadores II

Profa. Juliana Pinheiro Campos


E-mail:
jupcampos@leopoldina.cefetmg.br
PROGRAMAÇÃO DE COMPUTADORES II

 Ementa
Conceitos de orientação a objetos: tipos abstratos
de dados, objetos, classes, métodos, visibilidade,
escopo, encapsulamento, associações de classes,
estruturas todo-parte e generalização-
especialização, interfaces; herança de interface e
de classe, polimorfismo, sobrecarga, invocação de
métodos; aplicações em uma linguagem de
programação orientada a objetos; noções de
modelagem de sistemas usando UML: diagramas
de classe e de interação.
PROGRAMAÇÃO DE COMPUTADORES II

 Pré-requisitos
 CMA01 - Programacão de Computadores I

 Co-requisitos
 CMA05 – Laboratório de Programação de
Computadores II
PROGRAMAÇÃO DE COMPUTADORES II

 Página com informações da disciplina


 Ambiente Moodle

http://www.leopoldina.cefetmg.br/moodle
PROGRAMAÇÃO DE COMPUTADORES II
 Bibliografia básica:
 Livro texto:
BARNES, David J.; KÖLLING, Michael. Programação
Orientada a Objetos com JAVA: Uma introdução
prática usando o BlueJ. São Paulo: Pearson
Prentice Hall, 2004.
PROGRAMAÇÃO DE COMPUTADORES II

 Proposta de distribuição de pontos

 Avaliação #1: 20 pontos - 30/09/2009


 Avaliação #2: 25 pontos - 28/10/2009
 Avaliação #3: 25 pontos - 25/11/2009
 Trabalho Prático #1 (TP1): 10 pontos
 Trabalho Prático #2 (TP2): 10 pontos
 Exercícios em sala de aula: 10 pontos
PROGRAMAÇÃO DE COMPUTADORES II
 Ambiente de desenvolvimento integrado

 BlueJ – The interactive Java environment

www.bluej.org
PROGRAMAÇÃO DE COMPUTADORES II
 Ambiente de desenvolvimento integrado

 BlueJ: Foi desenvolvido como um ambiente


para ensinar Programação Orientada a Objetos
(POO) para iniciantes.

 Vantagens:
 Interface muito simples;
Suporta ferramentas de ensino não-
disponíveis em outros ambientes (Ex:
visualização da estrutura de classes)
Capacidade do usuário criar objetos de
qualquer classe e interagir com seus métodos.
PROGRAMAÇÃO DE COMPUTADORES II
 Java
 Linguagem de Programação Orientada a
Objetos que tem sido amplamente utilizada para
o ensino introdutório de POO.

 Desenvolvida na década de 90 por uma equipe


de programadores chefiada por James Gosling,
na empresa Sun Microsystems.

 Uma das linguagens mais utilizadas para


desenvolvimento de aplicações desktop.
PROGRAMAÇÃO DE COMPUTADORES II
 Principais características da linguagem
 Orientada à objetos;
 Independente de plataforma;
 Sem ponteiros;
 Performance;
 Segurança;
 Permite multithreading.

 Porque utilizar Java?


Devido a sua popularidade e
O projeto da linguagem com características
que facilitam o ensino.
PROGRAMAÇÃO DE COMPUTADORES II
 Introdução à tecnologia Java

 Para trabalhar com Java é necessária a


instalação do JDK.

 JDK (Java Development Kit) é composto por:


Um compilador (javac);
Uma máquina virtual Java (java);
Um visualizador de applets (appletviewer);
Bibliotecas de desenvolvimento (packages);
Um programa para composição de
documentação (javadoc);
Um depurador básico de programas (jdb);
JRE (Java Run Environment).
PROGRAMAÇÃO DE COMPUTADORES II
 Introdução à tecnologia Java

 Diferente das linguagens convencionais (que


são compiladas para linguagem de máquina), os
programas Java são compilados para bytecodes.

 Bytecodes são como uma linguagem de


máquina destinada a uma única plataforma, a
máquina virtual Java (JVM – Java Virtual
Machine), um interpretador de bytecodes.

 Um mesmo programa Java pode ser executado


em qualquer arquitetura que disponha de uma
máquina virtual Java.
PROGRAMAÇÃO DE COMPUTADORES II
 Introdução à tecnologia Java
 Compilação e execução de uma aplicação
Java.
javac

Bytecodes
Código fonte Independente de plataforma
PROGRAMAÇÃO DE COMPUTADORES II
 Introdução à tecnologia Java
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS

 Orientação a objetos (OO)


 Uma forma de pensar os problemas, utilizando
modelos organizados a partir de conceitos do
mundo real.

 Paradigma para o desenvolvimento de software


que organiza o software como uma coleção de
objetos que interagem entre si.

 As partes das quais o modelo é construido sao os


objetos que aparecem no dominio do problema.
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS

 Evolução histórica das Linguagens


Orientadas a Objeto
 1966 – SIMULA (Kristen Nogaard, Noruega);
 1980 – SMALLTALK (Xerox);
 1986 – C++ (AT&T), SMALLTALK V,
OBJECTIVE-C;
 1988 – EIFELL (Meyer, França);
 1989 – Turbo Pascal 5.5 (Borland);
 1995 – JAVA;
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS

 Evolução histórica das Linguagens


Orientadas a Objeto
 O termo Programação Orientada a Objetos foi
criada por Alan Kay, autor da linguagem de
Programação SMALLTALK.
 SIMULA 67 - primeira linguagem Orientada a
Objeto
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS –
Conceitos de Orientação a Objetos

 Objetos
 Qualquer coisa do mundo real com limite e
identidade bem definidos;

 Exemplos:
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS –
Conceitos de Orientação a Objetos

 Objetos

 Contém atributos (dados) e operações


(comportamentos).
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS –
Conceitos de Orientação a Objetos

 Abstração
 Habilidade mental que permite aos seres
humanos visualizarem os problemas do mundo
real com vários graus de detalhe, dependendo do
contexto corrente do problema;

$
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS –
Conceitos de Orientação a Objetos
 Abstração

Telefone

 A abstração é aplicada em diferentes níveis na


modelagem de um sistema.
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS –
Conceitos de Orientação a Objetos

 Classe
 Representa a abstração de um conjunto de
OBJETOS do mundo real que possuem tipos de
características e de comportamento em comum.

Classe
Veículo
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS –
Conceitos de Orientação a Objetos

 Classe

Classe
Funcionário
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS –
Conceitos de Orientação a Objetos

 Exemplo: Modelagem de uma simulação de


tráfego
 Tipos de entidades:

 Carros
 Motocicletas
 Pedestres
 Outros
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS –
Conceitos de Orientação a Objetos

 Exemplo: Modelagem de uma simulação de


tráfego
 O que é um carro nesse contexto: classe ou
objeto?
 Perguntas úteis:

 Qual a cor do carro?

 Onde ele está nesse momento?


INTRODUÇÃO À ORIENTAÇÃO A OBJETOS –
Conceitos de Orientação a Objetos

 Atributo

 Uma característica particular de uma ocorrência


da classe.

 Cada atributo possui um valor para cada


instância de objeto.

 A classe define quais campos um objeto tem,


mas todo objeto armazena seu próprio conjunto
de valores (o estado do objeto).
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS –
Conceitos de Orientação a Objetos

 Atributo
 Atributos da classe Funcionário

Funcionário
• Matrícula
• Nome
• Dt_Nascimento
• CPF
• ...
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS –
Conceitos de Orientação a Objetos

 Instância
 Representa cada ocorrência de um objeto de
uma classe específica.

 Normalmente dizemos que um determinado


objeto é uma instância de determinada classe.

 INSTANCIAÇÃO: Criação de um objeto da


classe.
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS –
Conceitos de Orientação a Objetos

 Instância

Funcionário
• Matrícula - 123
• Nome – José da Silva
• Dt_Nascimento -
12/08/1970
• CPF - 000.111.222-0
• ...
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS –
Conceitos de Orientação a Objetos

 Operação

 Uma ação que o objeto executa, uma ordem que


faz o objeto agir.

 Operações podem ser invocadas (O JAVA as


chama)

 A implementação de uma operação é chamada


de método.
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS –
Conceitos de Orientação a Objetos

 Operação

Funcionário
• Matrícula - 123
• Nome – José da Silva
• Dt_Nascimento -
12/08/1970
• CPF - 000.111.222-0
• ...

• Gravar
• Excluir
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS –
Conceitos de Orientação a Objetos

 Parâmetros

 Métodos podem ter parâmetros para passar


informações adicionais necessárias para sua
execução.

 Valores adicionais requeridos por alguns


metodos.
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS
 Criando objetos
 Projeto shapes
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS

 Projeto shapes

 Crie um objeto do tipo Círculo (Circle).

 Invoque (efetue uma chamada) o método


makeVisible do objeto criado.

 Invoque os métodos moveRight e moveLeft de


modo a posicionar o objeto perto do centro da
tela.

 Invoque o método makeInvisible para ocultar o


objeto círculo.
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS
 Projeto shapes

 O que acontece se efetuarmos uma chamada ao


método moveRight enquanto o objeto estiver
invisivel?
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS
 Projeto shapes

 Invoque o método moveHorizontal.

Digite 50 e clique OK.


INTRODUÇÃO À ORIENTAÇÃO A OBJETOS
 Projeto shapes

 Tente invocar os métodos moveVertical,


slowMoveVertical e changeSize.

 Utilize o método moveHorizontal para mover o


círculo 70 pixels para a esquerda.
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS
 Estado

 Representa a abstração de uma forma de


apresentação dos objetos de uma classe em um
determinado instante de tempo.

 Representa o conjunto de valores de todos os


atributos de um objeto em um instante.

 BlueJ: utilize Inspecionar para ver o estado de


um objeto.
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS
 Estado
 BlueJ: utilize Inspecionar para ver o estado de
um objeto.
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS
 Estado

 Um estado tem uma duração.

 A transição de estado representa a mudança de


estado de um objeto como resposta à chegada
de um evento.

 Exemplo: mudança de estado de um objeto


livro.
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS
 Estado
 Projeto shapes
Crie vários objetos na bancada de objetos e
inspecione cada um deles por vez.

Altere o estado de um objeto enquanto a janela


Inspetor de Objetos estiver aberta.
O que aconteceu?
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS
 O que há em um objeto??
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS
 O que há em um objeto??
 Projeto shapes: tarefas

Crie uma imagem semelhante à mostrada


abaixo, com objetos das classes disponíveis
no projeto.
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS
 Interação entre objetos
 Projeto picture: tarefas
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS
 Interação entre objetos
 Projeto picture: tarefas

Crie uma instância da classe Picture e invoque seu


método draw.

Experimente os métodos setBlackAndWhite e


setColor.

Como a classe Picture desenha a figura?

Utilize Inspecionar na instância da Classe Picture


criada. Quais são os atributos da classe?
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS
 Interação entre objetos
 Projeto picture: Considerações

A classe Picture possui um conjunto de


instruções semelhantes àqueles utilizados
para criar a figura manualmente.

A classe Picture é desenvolvida de modo que


quando se cria uma instância de Picture, tal
instância torna-se responsável por cirar os
objetos (Rectangle, Circle, Triangle) que
compõem a figura.
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS
 Interação entre objetos
 Projeto picture: Considerações

 Objetos podem criar outros objetos.

 Um programa Java pode ter milhares de objetos que


interagem para completar uma tarefa.

 A comunicação entre objetos se dá por intermédio


de chamadas a métodos.
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS
 Código-fonte
 Definição: Texto escrito em uma linguagem de
programação.

 Cada classe possui um código fonte associado


(implementação da classe).

 Possui as definições da classe, tal como atributos


e métodos.
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS
 Código-fonte
 Projeto picture: Considerações.

Acesse o menu pop-up da classe Picture → Open Editor.

Identifique o conjunto de instruções que desenha a


figura. Altere a cor do sol para amarelo (“yellow”).

Encontre a definição do sol (private Circle sun;).

Crie uma definição de um novo sol (private Circle sun2;)


INTRODUÇÃO À ORIENTAÇÃO A OBJETOS
 Código-fonte
 Projeto picture: Considerações.

Escreva o código apropriado para criar o


segundo sol.

Exercício desafio:
 Adicione um pôr-do-sol à versão simples de Picture
(Faça o sol se pôr lentamente. Lembre-se do
método slowMoveVertical).
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS
 Código-fonte
 Projeto lab classes: Tarefas.

Crie um objeto da classe Student.

Preencha os parâmetros solicitados (nome e


código identificador).
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS
 Valores de retorno:
 Projeto lab classes: Tarefas.

Crie outros objetos da classe Student.

Invoque o método getName.

Invoque o método changeName.

Quais as diferenças nas assinaturas dos


métodos e no resultado de suas chamadas?
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS
 Objetos como parâmetros:
 Projeto lab classes: Tarefas.

Crie um objeto da classe LabClass.

Invoque o método numberOfStudents desse


objeto.

Crie pelo menos três objetos Student e chame


o método enrollStudents do objeto LabClass.

Invoque o método printList do objeto da classe


LabClass.
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS
 Atividades:
 Projeto lab classes: Tarefas.

Uilize o inspetor em um objeto LabClass Para


descobrir quais campos (atributos) ele tem.

Defina um instrutor, sala e hora para o laboratório


(objeto LabClass).
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS
 Atividades:
 Projeto lab classes: Tarefas.

Uilize o inspetor em um objeto LabClass Para


descobrir quais campos (atributos) ele tem.

Defina um instrutor, sala e hora para o laboratório


(objeto LabClass).
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS
 Tipos de dados em Java
 Tipos primitivos: armazenados diretamente nas
variáveis. Têm semântica de valor.

 Tipos objeto: armazenam as referências ao


objeto. Quando atribuídos a uma outra variável,
somente a referência é copiada.
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS
 Tipos primitivos da linguagem Java

Tipo Descrição Exemplos


byte byte inteiro (8 bits) 24 -2
short inteiro curto (16 bits) 137 -119
int inteiro (32 bits) 5409 -2003
long inteiro longo (64 bits) 423266353 55L
float ponto flutuante de precisão simples 43.889F
double ponto flutuante de precisão dupla 45.63
char um único caractere (16 bits) m' ?'
boolean valor booleano (verdadeiro ou falso) true false

Todos os tipos não listados nessa tabela são tipos objeto.


INTRODUÇÃO À ORIENTAÇÃO A OBJETOS

 Características da Orientação a Objetos


(OO)
 Encapsulamento:
Representa o ato de reunir em uma estrutura chamada
classe, as características e o comportamento dos objetos.

Forma de organizar as características e comportamento dos


objetos de uma classe, permitindo que um objeto proteja a
integridade de suas partes.

Ex: Calculadora.
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS

 Características da Orientação a Objetos


(OO)
 Reusabilidade: Reutilização de componentes de
software e diminuição do tempo de
desenvolvimento.

 Manutenibilidade: Mudanças bem localizadas,


não acarretando propagações descontroladas.
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS

 Características da Orientação a Objetos


(OO)
 Confiabilidade: O encapsulamento permite um
maior controle e segurança às classes dos
objetos.

 Extensibilidade: Extensibilidade é a medida da


facilidade em se adicionar novas funcionalidades
(operações) a um componente de uma
modelagem existente.
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS

 Métodos de modelagem Orientados a


Objetos (OO)
BOOCH

OOSE/ Rebecca
Objectory Wirfs-
Brock

Martin e Odeil UML Coad-Yourdon

OMT Shlaer e
Mellor
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS

 UML - Unified Modeling Language


(Linguagem de Modelagem Unificada)

 Na década de 90, Booch, Rebecca


Rumbaugh e
Wirfs-
Jacobson uniram as melhores Brock características
de cada método e criaram a UML.
 A UML é uma família de notações gráficas, que
ajuda na descrição e no projeto de sistemas de
software, particularmente daqueles construídos
utilizando o estilo orientado a objetos .
INTRODUÇÃO À ORIENTAÇÃO A OBJETOS

 Resumo: principais conceitos

 Objetos são especificados por classes.

Rebecca
 Classes definem o conceito geral de algo
Wirfs-
enquanto os objetos representam
Brock
instâncias
concretas da classe.

 Os métodos são a forma de comunicação entre


os objetos e entre um objeto e um usuário.

 Todos os valores dos atributos de um objeto


formam o seu estado.

También podría gustarte