Beruflich Dokumente
Kultur Dokumente
Eliselma Vieira
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.
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.
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;
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;
Java (A
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
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.
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
POO oferece suporte a ocultao de dados ou data hiding; Os dados ficam seguros de qualquer alterao `acidental;
Para acesar os dados de um objeto, voc precisa saber quais mtodos/funes interage com ele.
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.
16
Objeto dados
Objeto
Objeto
dados
dados
(6/33)
19
(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
(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.
entre si
21
(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
(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
(11/33)
Mtodos operam no estado interno de um objeto e servem como mecanismo de comunicao entre objetos.
Bibicleta B
7 35 km/h
24
Documento
CLASSE
Autor DataDeChegada
Atributos
Imprimir Editar
Funes
OB1: Documento
OB2: Documento
25
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
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();
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
Com o encapsulamento um objeto determina a permisso que outros objetos tero para acessar seus atributos (estado).
31
32
Note que no existe uma pessoa chamada jogador de futebol. Todavia, pessoas com nomes especficos so membros desta classe SE possuem determinadas caractersticas.
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.
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
35
Pessoa
------------------------------------------------
nome idade
Professor
------------------------------------------------------------------------------------
Aluno
-------------------------------------------------------------------
curso cr
36
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;