46409-1 introducao a oo

Post on 03-Jul-2015

109 Views

Category:

Documents

2 Downloads

Preview:

Click to see full reader

TRANSCRIPT

Programação de Computadores II

Profa. Juliana Pinheiro CamposE-mail:

jupcampos@leopoldina.cefetmg.br

ENGENHARIA DE CONTROLE E AUTOMAÇÃO

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

Código fonteBytecodesIndependente de plataforma

javac

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

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

Telefone

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 einspecione cada um deles por vez.

Altere o estado de um objeto enquanto a janelaInspetor 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 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.

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

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

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

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)

UML

BOOCH

OOSE/Objectory

Coad-YourdonMartin e Odeil

OMT

Rebecca Wirfs-Brock

Shlaer e Mellor

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

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

top related