Você está na página 1de 71

Orientao a Objetos

Maurcio de Castro
SOLIS/UNIVATES mcastro@solis.coop.br Coordenador de Desenvolvimento de Sistemas em Software Livre da SOLIS/UNIVATES
1

Sumrio
Cenrios de Desenvolvimento Histrico da OO Conceitos de OO Anlise e Desenvolvimento Bancos de Dados OO

Cenrios de Desenvolvimento

Cenrio Estrutural
Foco principal nas funes depois nos dados, informaes desagrupadas As idias e necessidades dos usurios normalmente no ficam claras
Quais so suas necessidades para o sistema? Preciso de um sistema que controle todas as vendas dos meus produtos

Cenrio Estrutural
Validao com o Usurio
muito dificil para o usurio leigo entender um modelo ER SAGU tem 99 tabelas e centenas de relacionamentos Problemas se descobrem durante a implementao

MIOLO FrameWork OO para Desenvolvimento de Software


5

Cenrio Estrutural
Excesso de documentao ou nenhuma Cronograma apertado, prazos estourados, dificuldade de reaproveitamento de cdigo Cliente insatisfeito Horas infindveis de manuteno corretiva Custo elevado de projeto

Cenrio OO
Foco principal nos objetos do mundo real, com suas funes e dados agrupados. Deve-se fazer o levantamento de requisitos j pensando nos objetos do mundo real. Facilita o entendimento por parte do programador das necessidades do usurio
O que vamos controlar? Nossos carros
7

Cenrio OO
Diminuio do tempo e custo de desenvolvimento Atendimento da demanda gerada pela evoluo tecnolgica Reutilizao de cdigo, facilidade de manuteno

Histrico da Orientao a Objetos

Histrico
1967: Simula - introduz os primeiros conceitos de OO 1972: Smalltalk 1980: C++ linguagem hbrida, derivada da linguagem C 1983: Ada criada para uso militar nos EUA 1984: Eilffel primeiras caractersticas formais de OO 1986: Object pascal 1995: JAVA - Linguagem puramente orientada a objetos 1995: Vrias linguagens agregando conceitos de OO
10

Simula
A primeira linguagem a incorporar facilidades para definir classes de objetos genricos na forma de uma hierarquia de classes e subclasses Foi idealizada em 1966, na Noruega, como uma extenso da linguagem ALGOL 60. Uma classe em Simula um mdulo englobando a definio da estrutura e do comportamento comuns a todas as suas instncias (objetos).

11

Smalltalk
Smalltalk foi desenvolvida no Centro de Pesquisas da Xerox durante a dcada de 70 Incorporou idias de Simula Criou o princpio de objetos ativos, prontos a "reagir" a "mensagens" que ativam "comportamentos" especficos do objeto

12

C++
Questes no projeto de C++
Ser melhor do que C Suportar abstrao de dados Suportar programao orientada a objetos

C++ foi projetada para dar suporte a abstrao de dados e programao orientada a objetos C++ no impe um paradigma
13

Ada
Ada uma linguagem de programao criada atravs de um concurso realizado pelo U.S. Departament of Defense (DoD) O principal projetista da equipe foi o francs Jean Ichbiah. Esse concurso foi feito para por ordem na situao, o DoD em 1974 usava cerca de 450 linguagens ou dialetos de programao. A linguagem foi primeiramente padronizada em 1983 pelo ANSI e em 1985 a Organizao Internacional de Padronozao (ISO).

14

Eiffel
Eiffel uma Linguagem de Programao avanada, puramente orientada a objeto que enfatiza o projeto e construo de software reusvel e de alta qualidade. Eiffel foi criada por Bertrand Meyer que tinha uma extensa experincia com programao orientada a objeto, particularmente com SIMULA.
15

Object Pascal
O Object Pascal uma linguagem orientada a objetos, isto , todas as informaes so tratadas como objetos Todos estes objetos pertencem a uma classe, que so categorias de objetos Delphi / Kylix / Lazarus so exemplos de ferramentas que utilizam esta linguagem.

16

Java
O Java ao mesmo tempo um ambiente e uma linguagem de programao desenvolvida pela Sun Microsystems, Inc. Trata-se de mais um representante da nova gerao de linguagens orientadas a objetos e foi projetado para resolver os problemas da rea de programao cliente/servidor. Os aplicativos em Java so compilados em um cdigo de bytes independente de arquitetura.
17

Java
Esse cdigo de bytes pode ento ser executado em qualquer plataforma que suporte um interpretador Java. O Java requer somente uma fonte e um binrio e, mesmo assim, capaz de funcionar em diversas plataformas, o que faz dele um sonho de todos os que realizam manuteno em programas.
18

Evoluo da OO
No se configura como uma mudana de paradgma abrupta. Evoluiu de idias j manifestadas h muito tempo.
Larry Constantine - (Dcada de 1960) Foi quem primeiro lanou a idia de que softwares poderiam ser projetados antes que fossem programados O. J. Dahl e K. Nygaard - (1966) - Foi quem primeiro lanou a idia de Classes introduzida na linguagem Simula Alan Klay, Adele Goldberg e outros - (1970) Iniciaram o conceito de Mensagem e Herana, usados na linguagem SmallTalk.

19

Evoluo da OO
Programao orientada a objetos uma evoluo da programao estruturada; Na programao estruturada temos funes (procedures ou rotinas) e dados (normalmente globais) que podem ser acessados por qualquer funo;

20

Evoluo da OO
Na programao orientada a objetos, temos funes agregadas aos dados em uma unidade chamada objeto, ou seja, os dados no esto separados das funes, mas sim unidos as mesmas; A tendncia para os prximos anos que a maioria das linguagens de programao sejam baseadas em objeto
21

Conceitos de Orientao a Objetos

22

Bases da Orientao a Objetos


Na compreenso do mundo, os seres humanos utilizam-se de trs mtodos de organizao dos pensamentos:
Diferenciao Distino entre todo e parte Classificao V a orientao a objetos, como tcnica para modelagem de sistemas, utiliza estes mtodos para diminuir a diferena semntica entre a realidade e o modelo
23

Exemplo

24

Conceitos
Objetos e Instncias Classes Atributos Mtodos Visibilidade de atributos e operaes Mensagens

25

Objeto
Um objeto denota uma entidade, seja ela de natureza fsica, conceitual ou de software.
Entidades fsicas: um carro, uma pessoa, uma casa Entidade conceitual: um organograma de uma empresa Entidade de software: um boto em uma GUI

26

Objeto
uma entidade capaz de reter um estado (informao/atributos/propriedades) e que oferece uma srie de operaes (comportamentos/mtodos) ou para examinar ou para afetar este estado Um objeto um conceito, uma abstrao, algo com limites e significados ntidos em relao ao domnio de uma aplicao Objetos facilitam a compreenso do mundo real e oferecem uma base real para implementao em computador
27

Objeto
Um objeto algo que tem:
Estado Comportamento Identidade

28

Estado de um Objeto
O estado de um objeto representa uma das possveis condies em que um objeto pode existir O estado representado pelos valores das propriedades de um objeto em um determinado instante O estado do objeto usualmente muda ao longo do tempo: Exemplo (Aluno Maurcio):
Nome: Maurcio Matrcula: 105018 Semestre de Ingresso: 2000A
29

Comportamento de um Objeto
O comportamento determina como um um objeto pode responder a interaes mediante ativao de operaes decorrentes de mensagens recebidas de outros objetos O Comportamento determinado pelo conjunto de operaes que o objeto pode realizar. Controle Academico
Maurcio Retorna: 105018
30

Solicita matrcula

Identidade de um Objeto
Cada objeto tem um nico identificador, mesmo que seu estado seja idntico ao de outro objeto
Maurcio (objeto) Controle Acadmico (Sistema que est sendo construdo) Semestre (estado) Matrcula 105018 (Propriedade de um aluno) Lista de Semestres Cursados (candidato a objeto) Semestre corrente (o mesmo que semestre)
31

Classe
Uma classe a descrio de um grupo de objetos com propriedades Semelhantes (atributos), mesmo comportamento (operaes), mesmos relacionamentos com outros objetos (associaes e agregaes), e mesma semntica Um objeto uma instncia de uma classe

32

Classe
Uma classe uma abstrao que
Enfatiza caractersticas relevantes Abstrai outras caractersticas Abstrao: ajuda lidar com a complexidade

33

Exemplos de Classes
Professor
Atributos: Nome, Matrcula, Data de Contratao, Titulao Operaes: DefineNome(), AlteraNome(), TempoServio(), DefineTitulao(), AlteraTitulao(), ... Atributos: Cod, Nome, Local, Crditos, Horrio, Capacidade Operaes: DefineCod(), AlteraCod(), DefineNome(), AlteraNome(), NrCreditos(), AdicionaAluno(), EliminaAluno(), VerificaEstado(), ...

Turma:

34

Classe
Encontrando Classes
Uma classe deveria capturar uma e somente uma abstrao chave.
Abstrao ruim: classe "Aluno" que conhece a informao do aluno e as disciplinas que aquele aluno est matriculado. Boa abstrao: separar em uma classe para Aluno e uma classe para Disciplina

35

Classe
Nomeando Classes
Uma classe deveria ser um substantivo singular que melhor caracteriza a abstrao Dificuldades na nomeao das classes podem indicar abstraes mal definidas Nomes deveriam surgir diretamente do domnio do problema

36

Classe
Estilo para Nomear Classes
Um guia de estilo deveria ditar convenes de nomeao para classes Uma proposta simples:
Classes so nomeadas com um substantivo no singular O nome de uma classe inicia com a primeira letra maiscula No so utilizados smbolos de sublinhado ("_") nomes compostos de mltiplas palavras so organizados com todas as palavras juntas, onde a primeira letra de cada uma fica em maiscula Exemplos: Aluno, Professor, ControleAcadmico
37

Atributo
O estado de um objeto dado por valores de atributos e por ligaes que tem com outros objetos Todos os objetos de uma classe so caracterizados pelos mesmos atributos, ou variveis de instncias O mesmo atributo pode ter valores diferentes de objeto para objeto
38

Atributo
Atributos so definidos ao nvel da classe, enquanto que os valores dos atributos dos atributos so definidos ao nvel do objeto Exemplos:
uma pessoa (classe) tem os atributos nome, data de nascimento e peso Joo uma pessoa (objeto da classe pessoa) com nome "Joo da Silva", data de nascimento "18/03/1973" e peso "70Kg"
39

Mtodos
O comportamento invocvel de objetos so os mtodos Um mtodo algo que se pode pedir para um objeto de uma classe fazer Objetos da mesma classe tem os mesmos mtodos Mtodos so definidos ao nvel de classe, enquanto que a invocao de uma operao definida ao nvel de objeto
40

Construtor
um mtodo utilizado para inicializar objetos da classe quando estes so criados Este mtodo possui o mesmo nome da Classe e no tem nenhum tipo de retorno, nem mesmo void

41

Visibilidade de atributos e mtodos


Atributos e Mtodos Pblicos
So atributos e mtodos dos objetos que podem ser visveis externamente, ou seja, outros objetos podero acessar os atributos e mtodos destes objetos sem restries Atributos e mtodos que s podem ser acessados por operaes internas ao prprio objeto so ditos privados
42

Atributos e Mtodos Privados

Mtodos
Interface
Os mtodos pblicos de uma classe definem a interface da classe. Os mtodos privativos no fazem parte interface da classe pois no pode ser acessada externamente Deve ser definido o nome dos mtodos, se tem tipo de retorno, e se recebe parmetros, a este conjunto de informaes sobre o mtodo d-se o nome de assinatura do mtodo
43

Assinatura

Mensagens
Uma mensagem uma solicitao feita por um objeto A a um objeto B Como resultado desta solicitao, o objeto B ir modificar seu estado ou ir retornar algum valor O conceito de mensagem est diretamente associado ao conceito de operao A interao entre os objetos feita atravs da troca de mensagens
44

Herana e Hierarquia
Hierarquia
Quando vamos trabalhar com um grande conjunto de classes de objetos, necessrio organizar estas classes de maneira ordenada de modo que tenhamos uma hierarquia Em uma hierarquia de classes teremos as classes mais genricas no topo, e as mais especficas na base.

45

Hierarquia
Automveis
automveis utilitrios (camionetes leves)
utilitrios urbanos utilitrios off-road passeio familia passeio esportivo carga inflamveis carga com frgirifico
46

automveis de passeio

automveis de carga

Herana e Hierarquia
Herana
Em uma hierarquia de classes semelhantes podemos dizer que as classes mais especficas herdam as caractersticas das mais genricas, ou seja, todo automvel de passeio familia um automvel de passeio A classe de nvel superior na na associao de herana chamada de super-classe e a inferior de sub-classe Portanto automvel de passeio famlia uma sub-classe de automvel de passeio
47

Herana

48

Herana e Hierarquia
Agregao Composio Herana x Agregao x Composio

49

Agregao / Composio
o princpio que permite o desenvolvedor considerar algo muito grande atravs do enfoque TODO-PARTE Utilizado para definir regras de negcio
Se a instncia do todo for removida, suas partes tambm devero ser removidas (composio) Se a instncia do todo for removida, suas partes no necessariamente devero ser removidas (agregao)
50

Agregao
Define uma "dependncia fraca" entre o todo e suas partes Se o todo for removido, as suas partes podero continuar existindo
um mecanismo que permite a construo de uma classe agregada a partir de outras classes componentes. Usa-se dizer que um objeto da classe agregada (Todo) tem objetos das classes componentes (Parte)
51

52

Composio
Define uma "dependncia forte" o todo e suas partes Se o todo deixar de existir, as suas partes tambm deixam de existir

53

54

Herana X Agregao x Composio


Herana
" um tipo de", as propriedades so herdadas de outra classe "usam um(a)", um objeto envia uma mensagem para outro objeto "composto por", um objeto composto por outros objeto
55

Associao

Composio

Abstrao
Abstrao o processo atravs do qual detalhes so ignorados, para nos concentrarmos nas caractersticas essenciais A abstrao nos leva a representar os objetos de acordo com o ponto de vista e interesse de quem os representa

56

Abstrao
Para descrevermos um automvel (do ponto de vista de um observador externo), identificamos a cor do mesmo, o nmero de portas, o tipo das rodas e pneus. Quando identificamos o automvel apenas a partir destas caractersticas externas estamos fazendo uma abstrao pois uma srie de detalhes internos no estaro sendo descritos.
57

Abstrao
Ex: Ao modelarmos um objeto avio no contexto de um sistema de marcao de passagens areas, no vai nos interessar a caracterstica nmero de turbinas do avio, mas ir nos interessar a caracterstica nmero de assentos disponveis Ao ignorarmos algumas caractersticas no relevantes em um determinado contexto, estamos fazendo uma abstrao
58

Encaplusamento
o processo de ocultao das caractersticas internas do objeto O encapsulamento cuida para que certas caractersticas no possam ser vistas ou modificadas externamente

59

Encaplusamento
Exemplo
Podemos dizer que o motor de um automvel est encapsulado, pois normalmente no podemos ver ou alterar caractersticas do motor Podemos ento utilizar um automvel sem conhecer nada das complexidades do motor, que esto encapsuladas

60

Encaplusamento
No contexto de uma linguagem OO um objeto pode ser definido como um conjunto de "funes" unidas aos dados que elas necessitam O encapsulamento "protege" os dados que esto "dentro" dos objetos, evitando assim que os mesmos sejam alterados erroneamente Os dados s podero ser alterados pelas "funes" dos prrpios objetos As "funes" dos objetos so chamadas de operaes ou mtodos
61

Polimorfismo
a capacidade de objetos diferentes reagirem segundo a sua funo a uma ordem padro. O comando "abre", por exemplo, faz um objeto entrar em ao, seja ele uma janela, uma porta ou uma tampa de garrafa

62

Polimorfismo
Sobrecarga
Atravs do mecanismo de sobrecarga, dois mtodos de uma classe podem ter o mesmo nome, desde que suas assinaturas sejam diferentes. Tal situao no gera conflito pois o compilador capaz de detectar qual mtodo deve ser escolhido a partir da anlise dos argumentos do mtodo.
63

Persistncia
Refere-se habilidade de um objeto existir alm da execuo que o criou, ou seja, ser armazenado em memria secundria (permanente ou persistente). No o armazenamento apenas dos atributos (dados), mas tambm dos mtodos para realizar os acessos. Muito encontrado em sistemas que manipulam banco de dados
64

Anlise e Desenvolvimento

65

Quando bem empregada, a Orientao a Objetos traz diversas vantagens:


reutilizao, confiabilidade, modelo de sistema mais realstico, facilidade de interoperabilidade e de manuteno, aumento da qualidade, maior produtividade unificao do paradigma (da anlise a implementao).

Por que utilizar Orientao a Objetos?

A Orientao a Objetos um paradigma que pode ser aplicado ao longo de todo o processo de construo do software.

66

UML (Unified Modeling Language)


UML uma linguagem para especificao, construo, visualizao e documentao de sistemas de software.
UML no uma metodologia no diz quem deve fazer o qu, quando e como UML pode ser usado segundo diferentes metodologias, tais como RUP (Rational Unified Process), FDD (Feature Driven Development), etc. UML no uma linguagem de programao
67

UML (Unified Modeling Language)


Modelos e Diagramas
Um modelo uma representao em pequena escala, numa perspectiva particular, de um sistema existente ou a criar Ao longo do ciclo de vida de um sistema so construdos vrios modelos, sucessivamente refinados e enriquecidos Um modelo constitudo por um conjunto de diagramas (desenhos) consistentes entre si, acompanhados de descries textuais dos elementos que aparecem nos vrios diagramas

68

UML (Unified Modeling Language)


Um diagrama uma vista sobre um modelo O mesmo elemento (exemplo: classe) pode aparecer em vrios diagramas de um modelo No UML, h nove diagramas standard Diagramas de viso esttica: casos de utilizao (use case), classes, objectos, componentes, distribuio (deployment) Diagramas de viso dinmica: sequncia, colaborao, estados (statechart), actividades

69

70

F I M
Maurcio de Castro
SOLIS/UNIVATES mcastro@solis.coop.br Coordenador de Desenvolvimento de Sistemas em Software Livre da SOLIS/UNIVATES

71

Você também pode gostar