Sie sind auf Seite 1von 43

Prof.

Eliselma Vieira

Introduo Propsito da Programao OO Caractersticas das Linguagens OO Sugestes de leitura

POO uma das principais inovaes no desenvolvimento de software da ltima dcada. Complexidade: Principal problema na elaborao de programas.
Erros de software tm elevado custo de correo
Quo maior a complexidade, maior a possibilidade de haver erros.

Podem causar situaes de falhas operacionais; Podem colocar vidas em perigo.

POO compreende uma nova abordagem de conceber e construir programas. POO permite lidar com a complexidade. POO facilita a manuteno. POO possibilita a obteno de programas mais confiveis.

POO foi desenvolvida devido s limitaes existentes nas abordagens anteriores.


Projeto e programao estruturada.

Para programas pequenos, no h necessidade de princpio organizacional. medida que cresce o tamanho dos programas, torna-se difcil compreender programas que excedam a centenas de linhas de cdigo.
Questo da complexidade

Abstrao de dados: os detalhes referentes s representaes das classes sero visveis apenas a seus atributos; Reutilizao: o encapsulamento dos mtodos e representao dos dados para a construo de classes facilitam o desenvolvimento de software reutilizvel, auxiliando na produtividade de sistemas; Flexibilidade: as classes delimitam-se em unidades naturais para a alocao de tarefas de desenvolvimento de software;

Extensibilidade: facilidade de estender o software devido a duas razes:

Mesma notao utilizada desde a fase de anlise at a implementao. Manutenibilidade: a modularizao natural em classes facilita a realizao de alteraes no software.

herana: novas classes so construdas a partir das que j existem; as classes formam uma estrutura fracamente acoplada o que facilita alteraes;

Existem diversas linguagens OO, tais como:


Smalltalk (1980) Ada (1983) Eiffel (~1985) Object Pascal (1986) Common Lisp (1986) C++ (~1989)

Java (A

que vamos utilizar)

Diviso de um programa em funes e mdulos constitui um dos fundamentos da programao estruturada. Funo: mecanismo usado para `quebrar (i.e. dividir) o programa em unidades menores.
Tornar os programas mais compreensveis

Disciplina de programao que tem influenciado a organizao de programas h vrios anos.

As linguagens procedimentais colocam nfase na funo


Ler dados, processar, checar existncia de erros, mostrar resultados, ...

Parte importante na soluo de problemas computacionais: DADOS

Em linguagens procedimentais:

Em outro contexto

Variveis locais so usadas apenas dentro do escopo da funo onde so declaradas. Variveis locais no so teis para dados que devem ser acessados por muitas e diferentes funes. Vide slide 10. Se muitas funes tem acesso a um conjunto de dados, ento qualquer modificao nos dados requer modificaes em todas as funes. Vide slide 11. Tornar-se- difcil fazer a manuteno correta de tais funes.

Programas em linguagens procedimentais so mais difceis de serem projetados


Funes e estruturas de dados no modelam o mundo real muito bem.

Mais difcil oferecer extensibilidade a linguagem procedimental, i.e.:


Adicionar, manipular e fazer a manuteno de novos tipos de dados.

Uma forma de restringir o acesso aos dados Esconder os dados de todas, exceto algumas poucas funes `crticas Benefcios resultantes:
Proteo aos dados Simplificar a manuteno

Num programa OO, se voc precisar ler os dados de um objeto, ento:


Voc chama a funo daquele objeto A funo ler os dados e retorna os valores a voc

Os dados ficam `escondidos, i.e.:

POO oferece suporte a ocultao de dados ou data hiding; Os dados ficam seguros de qualquer alterao `acidental;

Dados e funes ficam `encapsulados em uma nica entidade, denominada de objeto.

Para acesar os dados de um objeto, voc precisa saber quais mtodos/funes interage com ele.

Isto simplifica escrita, depurao e manuteno de programas.

Um programa numa linguagem OO consiste de vrios objetos, comunicando-se entre si, i.e.:
Atravs de trocas de mensagens (Java) Atravs da chamada de funes membro de outro objeto (C++) Vide slide 17.

Orientao a Objetos em Java


Identificar o estado e o comportamento de objetos do mundo real o primeiro passo para comear a pensar em programao OO.

Observe um objeto e pergunte:

Quais os possveis estados que esse objeto pode estar?


Quais os possveis comportamentos que ele pode executar?

16

Objeto dados

funo membro funo membro

Objeto

Objeto

dados

dados

funo membro funo membro

funo membro funo membro

Modelagem em termos de objetos Exemplos de objetos


Componentes eltricos, automveis numa simulao de fluxo de trfego Janelas, menus, objetos grficos, ... Pontos no plano, tempo, ...

Orientao a Objetos em Java

(6/33)

A unidade fundamental de programao em orientao a objetos (POO) a classe.


Classes contm:

Atributos: determinam o estado do objeto;

Mtodos: semelhantes a procedimentos em linguagens convencionais, so utilizados para manipular os atributos.

19

Orientao a Objetos em Java

(7/33)

As classes provem a estrutura para a construo de objetos - estes so ditos instncias das classes

Classe Aluno
atributos
Nome Matrcula Nota Mdia setNome(nome) getNome() ...

Instncias
Joo 193.31.098-7 7,6 Maria 195.31.022-5 8,7

mtodos

20

Orientao a Objetos em Java Objetos

(8/33)

So instncias da classe. Sob o ponto de vista da programao orientada a objetos, um objeto no muito diferente de uma varivel normal.

Um programa orientado a objetos composto por um conjunto de objetos que interagem

entre si
21

Orientao a Objetos em Java


Objetos

(9/33)

Objetos de software so conceitualmente similares a objetos do mundo real: eles consistem do estado e o comportamento relacionado. Um objeto armazena seu estado em campos (variveis) e expe seu comportamento atravs de mtodos (funes). Encapsulamento: princpio de projeto pelo qual cada componente de um programa deve agregar toda a informao relevante para sua manipulao como uma unidade (uma cpsula). Ocultao da Informao: princpio pelo qual cada componente deve manter oculta sob sua guarda uma deciso de projeto nica. Para a utilizao desse componente, apenas o mnimo necessrio para sua operao deve ser revelado (tornado pblico)
22

Orientao a Objetos em Java

(10/33)

Bicicleta
campos
(atributos) mtodos
mudarMarcha() mudarVelocidade() ... Marcha atual Velocidade atual

Instncias
Bibicleta A 3 20 km/h Bibicleta B 7 35 km/h

23

Orientao a Objetos em Java

(11/33)

Mtodos operam no estado interno de um objeto e servem como mecanismo de comunicao entre objetos.

Joo Joo 30 anos mudarMarcha

Bibicleta B

7 35 km/h

24

Orientao a Objetos em Java Classes x Objetos (12/33)

Documento
CLASSE
Autor DataDeChegada

Atributos
Imprimir Editar

Funes

OB1: Documento

OB2: Documento

25

Orientao a Objetos em Java Classe em Java (13/33)

Qualificador_de_acesso class Nome_Da_Classe { // atributos da classe // mtodos da classe } // Class Lampada public class Lampada { // Atributos boolean acesa; // Mtodos public void ligar() { acesa = true; } public void desligar() { acesa = false; } }

26

Objetos e Classes

Palio Parati Celta

JWO-4567 KLJ-0978 JDK-6543

Automvel Marca Placa

CLASSE OBJETOS (Instncias da classe Automvel)

Orientao a Objetos em Java Classe em Java (14/33)


class Bicicleta { int velocidade = 0; int marcha = 1; void mudarMarcha(int novoValor) { marcha = novoValor; } void aumentarVelocidade(int incremento) {

velocidade = velocidade + incremento;


} void aplicarFreios(int decremento) { velocidade = velocidade - decremento; } }
28

Orientao a Objetos em Java Criando objetos com Java (15/33)

Para instanciarmos um novo objeto devemos utilizar o operador new, conforme modelo abaixo:
NomeDaClasse nomeDoObjeto = new NomeDaClasse(); Lampada lamp1 = new Lampada(); Lampada lamp2 = new Lampada();

Criando dois objetos bicicleta:


Bicicleta bicicleta1 = new Bicicleta(); Bicicleta bicicleta2 = new Bicicleta();

Invocando seus mtodos:


bicicleta1.mudarMarcha(2); bicicleta2.aumentaVelocidade(5);
29

Orientao a Objetos em Java Resumo


(16/33)

A classe prov a estrutura para a construo de objetos.

Um objeto uma instncia de uma classe. Ele contm um estado (valores de seus atributos) e expe o seu comportamento atravs de mtodos (funes).

Ex. Bicicleta: ESTADO valores dos atributos velocidade e marcha; COMPORTAMENTO exposto pelos mtodos mudarMarcha, aumentarVelocidade e aplicarFreios.
30

Orientao a Objetos em Java Resumo


(17/33)

um princpio fundamental da OO:


Esconder o estado interno (valores dos atributos). Obrigar que interaes com os atributos sejam executadas atravs de mtodos.

Com o encapsulamento um objeto determina a permisso que outros objetos tero para acessar seus atributos (estado).
31

Orientao a Objetos em Java Encapsulamento dos Dados (18/33)

Proteger os atributos Permitir acesso aos atributos atravs dos mtodos

32

Coleo de objetos similares Classe de jogadores de futebol:


Pel Ronaldinho Romrio

Note que no existe uma pessoa chamada jogador de futebol. Todavia, pessoas com nomes especficos so membros desta classe SE possuem determinadas caractersticas.

Classes podem ser divididas em subclasses como, por exemplo:


A classe dos animais dividida em mamferos, anfbios, insetos, aves, ... A classe dos veculos dividida em carros de passeio, caminhes, nibus, motocicletas, ...

Princpio da herana

Classes derivadas compartilham caractersticas comuns com a classe da qual ela derivada. Vide slide 22. Reduz o tamanho do programa e aumenta a clareza do programa.

Orientao a Objetos em Java Herana


(19/33)

Permite a uma classe herdar o estado (atributos) e o comportamento (mtodos) de outra classe.
Herana : entre diferentes classes podem existir diversas semelhanas, ou seja, duas ou mais classes podero compartilhar os mesmos atributos e/ou os mesmos mtodos

Superclasse Subclasse Ancestral Descendente

35

Orientao a Objetos em Java Herana


(20/33)

Pessoa
------------------------------------------------

nome idade

Professor
------------------------------------------------------------------------------------

Aluno
-------------------------------------------------------------------

formao rea de interesse

curso cr

36

Orientao a Objetos em Java Herana


(21/33)

37

A B

classe base

A B C B

A classes derivadas D E

Depois que uma classe tenha sido criada, escrita e testada, ela pode ser distribuda para vrios programadores e reutilizada.
Similar a forma na qual uma biblioteca de funes numa linguagem procedimental pode ser incorporada em diferentes programas. Conceito de extenso de classe (reusabilidade da classe), i.e., adicionar novas caractersticas classe j existente.

Exemplo:
posio2 = posio + origem As variveis acima representam coordenadas Representam entidades reais de modo mais claro e direto, i.e. suporte a compreensibilidade.

No exemplo anterior:

posio2 = posio + origem Os operadores = (igual) e + (soma) usados na expresso acima no atuam de maneira similar com os tipos predefinidos da linguagem OO como um `int. Usar operadores ou funes de formas diferentes, dependente sobre o que eles esto operando, denominado de polimorfismo.

Vide artigo sobre POO no site da Revista Espao Acadmico em www.espacoacademico.com.br/035/35amsf .htm
J. Rumbaugh et al, Modelagem e Projetos Baseados em Objetos com UML 2, Ed. Campus, 2002;

K. Arnold and J. Gosling, The Java Programming Language, Addison-Wesley, 1996.


H. M. Deitel and P. J. Deitel, Java How to Program, Prentice Hall, 3rd Edition, 1999. http://java.sun.com

Das könnte Ihnen auch gefallen