46409-1 introducao a oo

63
Programação de Computadores II Profa. Juliana Pinheiro Campos E-mail: [email protected] ENGENHARIA DE CONTROLE E AUTOMAÇÃO

Upload: naiara-marques-santos

Post on 03-Jul-2015

109 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: 46409-1 Introducao a OO

Programação de Computadores II

Profa. Juliana Pinheiro CamposE-mail:

[email protected]

ENGENHARIA DE CONTROLE E AUTOMAÇÃO

Page 2: 46409-1 Introducao a OO

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.

Page 3: 46409-1 Introducao a OO

PROGRAMAÇÃO DE COMPUTADORES II

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

� Co-requisitos� CMA05 – Laboratório de Programação de

Computadores II

Page 4: 46409-1 Introducao a OO

PROGRAMAÇÃO DE COMPUTADORES II

� Página com informações da disciplina� Ambiente Moodle

http://www.leopoldina.cefetmg.br/moodle

Page 5: 46409-1 Introducao a OO

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çãoprática usando o BlueJ. São Paulo: PearsonPrentice Hall, 2004.

Page 6: 46409-1 Introducao a OO

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

Page 7: 46409-1 Introducao a OO

PROGRAMAÇÃO DE COMPUTADORES II

� Ambiente de desenvolvimento integrado

�BlueJ – The interactive Java environment

www.bluej.org

Page 8: 46409-1 Introducao a OO

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.

Page 9: 46409-1 Introducao a OO

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.

Page 10: 46409-1 Introducao a OO

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.

Page 11: 46409-1 Introducao a OO

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

Page 12: 46409-1 Introducao a OO

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.

Page 13: 46409-1 Introducao a OO

PROGRAMAÇÃO DE COMPUTADORES II

� Introdução à tecnologia Java

� Compilação e execução de uma aplicação Java.

Código fonteBytecodesIndependente de plataforma

javac

Page 14: 46409-1 Introducao a OO

PROGRAMAÇÃO DE COMPUTADORES II

� Introdução à tecnologia Java

Page 15: 46409-1 Introducao a OO

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.

Page 16: 46409-1 Introducao a OO

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;

Page 17: 46409-1 Introducao a OO

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

Page 18: 46409-1 Introducao a OO

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:

Page 19: 46409-1 Introducao a OO

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

� Objetos

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

Page 20: 46409-1 Introducao a OO

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;

$

Page 21: 46409-1 Introducao a OO

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

�Abstração

�A abstração é aplicada em diferentes níveis na modelagem de um sistema.

Telefone

Page 22: 46409-1 Introducao a OO

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

Page 23: 46409-1 Introducao a OO

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

�Classe

Classe Funcionário

Page 24: 46409-1 Introducao a OO

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

Page 25: 46409-1 Introducao a OO

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?

Page 26: 46409-1 Introducao a OO

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

Page 27: 46409-1 Introducao a OO

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

• ...

Page 28: 46409-1 Introducao a OO

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.

Page 29: 46409-1 Introducao a OO

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

• ...

Page 30: 46409-1 Introducao a OO

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.

Page 31: 46409-1 Introducao a OO

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

Page 32: 46409-1 Introducao a OO

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.

Page 33: 46409-1 Introducao a OO

INTRODUÇÃO À ORIENTAÇÃO A OBJETOS

�Criando objetos�Projeto shapes

Page 34: 46409-1 Introducao a OO

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.

Page 35: 46409-1 Introducao a OO

INTRODUÇÃO À ORIENTAÇÃO A OBJETOS

� Projeto shapes

� O que acontece se efetuarmos uma chamada ao método moveRight enquanto o objeto estiver invisivel?

Page 36: 46409-1 Introducao a OO

INTRODUÇÃO À ORIENTAÇÃO A OBJETOS

�Projeto shapes

� Invoque o método moveHorizontal.

Digite 50 e clique OK.

Page 37: 46409-1 Introducao a OO

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.

Page 38: 46409-1 Introducao a OO

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.

Page 39: 46409-1 Introducao a OO

INTRODUÇÃO À ORIENTAÇÃO A OBJETOS

�Estado

�BlueJ: utilize Inspecionar para ver o estado de um objeto.

Page 40: 46409-1 Introducao a OO

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.

Page 41: 46409-1 Introducao a OO

INTRODUÇÃO À ORIENTAÇÃO A OBJETOS

�Estado�Projeto shapes

Crie vários objetos na bancada de objetos einspecione cada um deles por vez.

Altere o estado de um objeto enquanto a janelaInspetor de Objetos estiver aberta.

O que aconteceu?

Page 42: 46409-1 Introducao a OO

INTRODUÇÃO À ORIENTAÇÃO A OBJETOS

� O que há em um objeto??

Page 43: 46409-1 Introducao a OO

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.

Page 44: 46409-1 Introducao a OO

INTRODUÇÃO À ORIENTAÇÃO A OBJETOS

� Interação entre objetos� Projeto picture: tarefas

Page 45: 46409-1 Introducao a OO

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?

Page 46: 46409-1 Introducao a OO

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.

Page 47: 46409-1 Introducao a OO

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.

Page 48: 46409-1 Introducao a OO

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.

Page 49: 46409-1 Introducao a OO

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;)

Page 50: 46409-1 Introducao a OO

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

Page 51: 46409-1 Introducao a OO

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

Page 52: 46409-1 Introducao a OO

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?

Page 53: 46409-1 Introducao a OO

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

Crie pelo menos três objetos Student e chame o método enrollStudents do objeto LabClass.

Invoque o método printList do objeto da classeLabClass.

Page 54: 46409-1 Introducao a OO

INTRODUÇÃO À ORIENTAÇÃO A OBJETOS

� Atividades:� Projeto lab classes: Tarefas.

Uilize o inspetor em um objeto LabClass Paradescobrir quais campos (atributos) ele tem.

Defina um instrutor, sala e hora para o laboratório(objeto LabClass).

Page 55: 46409-1 Introducao a OO

INTRODUÇÃO À ORIENTAÇÃO A OBJETOS

� Atividades:� Projeto lab classes: Tarefas.

Uilize o inspetor em um objeto LabClass Paradescobrir quais campos (atributos) ele tem.

Defina um instrutor, sala e hora para o laboratório(objeto LabClass).

Page 56: 46409-1 Introducao a OO

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.

Page 57: 46409-1 Introducao a OO

INTRODUÇÃO À ORIENTAÇÃO A OBJETOS

� Tipos primitivos da linguagem Java

Tipo Descrição Exemplos24 -2

short 137 -1195409 -2003423266353 55L

ponto flutuante de precisão simples 43.889Fponto flutuante de precisão dupla 45.63

m' ?'valor booleano (verdadeiro ou falso) false

byte byte inteiro (8 bits)inteiro curto (16 bits)

int inteiro (32 bits)long inteiro longo (64 bits)floatdoublechar um único caractere (16 bits)boolean true

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

Page 58: 46409-1 Introducao a OO

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.

Page 59: 46409-1 Introducao a OO

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.

Page 60: 46409-1 Introducao a OO

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.

Page 61: 46409-1 Introducao a OO

INTRODUÇÃO À ORIENTAÇÃO A OBJETOS

� Métodos de modelagem Orientados a Objetos (OO)

UML

BOOCH

OOSE/Objectory

Coad-YourdonMartin e Odeil

OMT

Rebecca Wirfs-Brock

Shlaer e Mellor

Page 62: 46409-1 Introducao a OO

INTRODUÇÃO À ORIENTAÇÃO A OBJETOS

� UML - Unified Modeling Language (Linguagem de Modelagem Unificada)

� Na década de 90, Booch, Rumbaugh e Jacobson uniram as melhores 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 .

Rebecca Wirfs-Brock

Page 63: 46409-1 Introducao a OO

INTRODUÇÃO À ORIENTAÇÃO A OBJETOS

� Resumo: principais conceitos

� Objetos são especificados por classes.

� Classes definem o conceito geral de algo enquanto os objetos representam 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.

Rebecca Wirfs-Brock