Upload
pedrobottas
View
217
Download
0
Embed Size (px)
Citation preview
8/8/2019 Curso Bsico de Orientao a Objetos
1/71
1
Orientao a Objetos
Maurcio de Castro
SOLIS/UNIVATES
Coordenador de Desenvolvimento de Sistemas em
Software Livre da SOLIS/UNIVATES
8/8/2019 Curso Bsico de Orientao a Objetos
2/71
2
Sumrio Cenrios de Desenvolvimento Histrico da OO Conceitos de OO Anlise e Desenvolvimento Bancos de Dados OO
8/8/2019 Curso Bsico de Orientao a Objetos
3/71
3
Cenrios deDesenvolvimento
8/8/2019 Curso Bsico de Orientao a Objetos
4/71
4
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
8/8/2019 Curso Bsico de Orientao a Objetos
5/71
5
Cenrio Estrutural Validao com o Usurio
muito dificil para o usurio leigo entender ummodelo ER
SAGU tem 99 tabelas e centenas derelacionamentos Problemas se descobrem durante aimplementao
MIOLO FrameWork OO para
Desenvolvimento de Software
8/8/2019 Curso Bsico de Orientao a Objetos
6/71
6
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
8/8/2019 Curso Bsico de Orientao a Objetos
7/71
7
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
8/8/2019 Curso Bsico de Orientao a Objetos
8/71
8
Cenrio OO Diminuio do tempo e custo dedesenvolvimento
Atendimento da demanda gerada pela
evoluo tecnolgica Reutilizao de cdigo, facilidade de
manuteno
8/8/2019 Curso Bsico de Orientao a Objetos
9/71
9
Histrico daOrientao a Objetos
8/8/2019 Curso Bsico de Orientao a Objetos
10/71
10
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
8/8/2019 Curso Bsico de Orientao a Objetos
11/71
11
Simula A primeira linguagem a incorporar facilidadespara definir classes de objetos genricos naforma de uma hierarquia de classes e sub-
classes Foi idealizada em 1966, na Noruega, comouma extenso da linguagem ALGOL 60.
Uma classe em Simula um mduloenglobando a definio da estrutura e do
comportamento comuns a todas as suasinstncias (objetos).
8/8/2019 Curso Bsico de Orientao a Objetos
12/71
12
Smalltalk Smalltalk foi desenvolvida no Centro dePesquisas 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
8/8/2019 Curso Bsico de Orientao a Objetos
13/71
13
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 orientadaa objetos C++ no impe um paradigma
8/8/2019 Curso Bsico de Orientao a Objetos
14/71
14
Ada Ada uma linguagem de programao criadaatravs de um concurso realizado pelo U.S.Departament of Defense (DoD)
O principal projetista da equipe foi o francs JeanIchbiah.
Esse concurso foi feito para por ordem na
situao, o DoD em 1974 usava cerca de 450linguagens ou dialetos de programao. A linguagem foi primeiramente padronizada em
1983 pelo ANSI e em 1985 a OrganizaoInternacional de Padronozao (ISO).
8/8/2019 Curso Bsico de Orientao a Objetos
15/71
15
Eiffel Eiffel uma Linguagem de Programaoavanada, puramente orientada a objeto queenfatiza o projeto e construo de software
reusvel e de alta qualidade. Eiffel foi criada por Bertrand Meyer que tinhauma extensa experincia com programaoorientada a objeto, particularmente comSIMULA.
8/8/2019 Curso Bsico de Orientao a Objetos
16/71
16
Object Pascal O Object Pascal uma linguagem orientada aobjetos, isto , todas as informaes sotratadas como objetos
Todos estes objetos pertencem a uma classe,que so categorias de objetos
Delphi / Kylix / Lazarus so exemplos deferramentas que utilizam esta linguagem.
8/8/2019 Curso Bsico de Orientao a Objetos
17/71
17
Java O Java ao mesmo tempo um ambiente euma linguagem de programao desenvolvidapela Sun Microsystems, Inc.
Trata-se de mais um representante da novagerao de linguagens orientadas a objetos efoi projetado para resolver os problemas darea de programao cliente/servidor.
Os aplicativos em Java so compilados em um
cdigo de bytes independente de arquitetura.
8/8/2019 Curso Bsico de Orientao a Objetos
18/71
18
Java Esse cdigo de bytes pode ento serexecutado em qualquer plataforma quesuporte um interpretador Java.
O Java requer somente uma fonte e umbinrio e, mesmo assim, capaz de funcionarem diversas plataformas, o que faz dele umsonho de todos os que realizam manutenoem programas.
8/8/2019 Curso Bsico de Orientao a Objetos
19/71
19
Evoluo da OO No se configura como uma mudana deparadgma abrupta. Evoluiu de idias jmanifestadas h muito tempo.
Larry Constantine - (Dcada de 1960) Foi quem primeirolanou a idia de que softwares poderiam ser projetadosantes que fossem programados
O. J. Dahl e K. Nygaard - (1966) - Foi quem primeirolanou a idia de Classes introduzida na linguagemSimula
Alan Klay, Adele Goldberg e outros - (1970) Iniciaram oconceito de Mensagem e Herana, usados na linguagemSmallTalk.
8/8/2019 Curso Bsico de Orientao a Objetos
20/71
20
Evoluo da OO Programao orientada a objetos umaevoluo da programao estruturada;
Na programao estruturada temos funes
(procedures ou rotinas) e dados(normalmente globais) que podem seracessados por qualquer funo;
8/8/2019 Curso Bsico de Orientao a Objetos
21/71
21
Evoluo da OO Na programao orientada a objetos, temosfunes agregadas aos dados em umaunidade chamada objeto, ou seja, os dados
no esto separados das funes, mas simunidos as mesmas; A tendncia para os prximos anos que amaioria das linguagens de programaosejam baseadas em objeto
8/8/2019 Curso Bsico de Orientao a Objetos
22/71
22
Conceitos deOrientao a Objetos
8/8/2019 Curso Bsico de Orientao a Objetos
23/71
23
Bases da Orientao a Objetos Na compreenso do mundo, os sereshumanos utilizam-se de trs mtodos deorganizao dos pensamentos:
Diferenciao Distino entre todo e parte Classificao V a orientao a objetos, como tcnica paramodelagem de sistemas, utiliza estes mtodos
para diminuir a diferena semntica entre arealidade e o modelo
8/8/2019 Curso Bsico de Orientao a Objetos
24/71
24
Exemplo
8/8/2019 Curso Bsico de Orientao a Objetos
25/71
25
Conceitos Objetos e Instncias Classes Atributos Mtodos Visibilidade de atributos e operaes
Mensagens
8/8/2019 Curso Bsico de Orientao a Objetos
26/71
26
Objeto Um objeto denota uma entidade, seja ela denatureza fsica, conceitual ou de software.
Entidades fsicas: um carro, uma pessoa, uma
casa Entidade conceitual: um organograma de umaempresa
Entidade de software: um boto em uma GUI
8/8/2019 Curso Bsico de Orientao a Objetos
27/71
27
Objeto uma entidade capaz de reter um estado(informao/atributos/propriedades) e queoferece uma srie de operaes(comportamentos/mtodos) ou para examinar oupara afetar este estado
Um objeto um conceito, uma abstrao, algocom limites e significados ntidos em relao aodomnio de uma aplicao
Objetos facilitam a compreenso do mundo real eoferecem uma base real para implementao emcomputador
8/8/2019 Curso Bsico de Orientao a Objetos
28/71
28
Objeto Um objeto algo que tem:
Estado Comportamento Identidade
8/8/2019 Curso Bsico de Orientao a Objetos
29/71
29
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 propriedadesde 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
8/8/2019 Curso Bsico de Orientao a Objetos
30/71
30
Comportamento de um Objeto O comportamento determina como um um objeto
pode responder a interaes mediante ativaode operaes decorrentes de mensagensrecebidas de outros objetos
O Comportamento determinado pelo conjuntode operaes que o objeto pode realizar.
Controle Academico Maurcio
Solicita matrcula
Retorna: 105018
8/8/2019 Curso Bsico de Orientao a Objetos
31/71
31
Identidade de um Objeto Cada objeto tem um nico identificador,
mesmo que seu estado seja idntico ao deoutro objeto Maurcio (objeto) Controle Acadmico (Sistema que est sendoconstrudo)
Semestre (estado) Matrcula 105018 (Propriedade de um aluno) Lista de Semestres Cursados (candidato a objeto) Semestre corrente (o mesmo que semestre)
8/8/2019 Curso Bsico de Orientao a Objetos
32/71
32
Classe Uma classe a descrio de um grupo deobjetos com propriedades Semelhantes(atributos), mesmo comportamento(operaes), mesmos relacionamentos comoutros objetos (associaes e agregaes), emesma semntica
Um objeto uma instncia de uma classe
8/8/2019 Curso Bsico de Orientao a Objetos
33/71
33
Classe Uma classe uma abstrao que
Enfatiza caractersticas relevantes Abstrai outras caractersticas
Abstrao: ajuda lidar com a complexidade
8/8/2019 Curso Bsico de Orientao a Objetos
34/71
34
Exemplos de Classes Professor Atributos: Nome, Matrcula, Data de Contratao,Titulao
Operaes: DefineNome(), AlteraNome(),
TempoServio(), DefineTitulao(), AlteraTitulao(), ... Turma:
Atributos: Cod, Nome, Local, Crditos, Horrio,Capacidade Operaes: DefineCod(), AlteraCod(), DefineNome(),
AlteraNome(), NrCreditos(), AdicionaAluno(),EliminaAluno(), VerificaEstado(), ...
8/8/2019 Curso Bsico de Orientao a Objetos
35/71
35
Classe Encontrando Classes
Uma classe deveria capturar uma e somente umaabstrao chave.
Abstrao ruim: classe "Aluno" que conhece ainformao do aluno e as disciplinas que aquele alunoest matriculado.
Boa abstrao: separar em uma classe para Aluno euma classe para Disciplina
8/8/2019 Curso Bsico de Orientao a Objetos
36/71
36
Classe Nomeando Classes
Uma classe deveria ser um substantivo singularque melhor caracteriza a abstrao
Dificuldades na nomeao das classes podemindicar abstraes mal definidas Nomes deveriam surgir diretamente do domnio
do problema
8/8/2019 Curso Bsico de Orientao a Objetos
37/71
37
Classe Estilo para Nomear Classes
Um guia de estilo deveria ditar convenes denomeao para classes Uma proposta simples:
Classes so nomeadas com um substantivo no singular O nome de uma classe inicia com a primeira letramaiscula
No so utilizados smbolos de sublinhado ("_") -nomes compostos de mltiplas palavras soorganizados com todas as palavras juntas, onde a
primeira letra de cada uma fica em maiscula
Exemplos: Aluno, Professor, ControleAcadmico
8/8/2019 Curso Bsico de Orientao a Objetos
38/71
38
Atributo O estado de um objeto dado por valores deatributos e por ligaes que tem com outrosobjetos
Todos os objetos de uma classe socaracterizados pelos mesmos atributos, ou variveis de instncias
O mesmo atributo pode ter valores diferentesde objeto para objeto
8/8/2019 Curso Bsico de Orientao a Objetos
39/71
39
Atributo Atributos so definidos ao nvel da classe,enquanto que os valores dos atributos dosatributos so definidos ao nvel do objeto
Exemplos: uma pessoa (classe) tem os atributos nome, datade nascimento e peso
Joo uma pessoa (objeto da classe pessoa) comnome "Joo da Silva", data de nascimento"18/03/1973" e peso "70Kg"
8/8/2019 Curso Bsico de Orientao a Objetos
40/71
40
Mtodos O comportamento invocvel de objetos so osmtodos
Um mtodo algo que se pode pedir para um
objeto de uma classe fazer Objetos da mesma classe tem os mesmosmtodos
Mtodos so definidos ao nvel de classe,enquanto que a invocao de uma operao definida ao nvel de objeto
8/8/2019 Curso Bsico de Orientao a Objetos
41/71
41
Construtor um mtodo utilizado para inicializar objetosda classe quando estes so criados
Este mtodo possui o mesmo nome da Classe
e no tem nenhum tipo de retorno, nemmesmo void
8/8/2019 Curso Bsico de Orientao a Objetos
42/71
42
Visibilidade de atributos e
mtodos Atributos e Mtodos Pblicos
So atributos e mtodos dos objetos que podemser visveis externamente, ou seja, outros objetospodero acessar os atributos e mtodos destesobjetos sem restries
Atributos e Mtodos Privados Atributos e mtodos que s podem ser acessadospor operaes internas ao prprio objeto soditos privados
8/8/2019 Curso Bsico de Orientao a Objetos
43/71
43
Mtodos Interface
Os mtodos pblicos de uma classe definem ainterface da classe. Os mtodos privativos nofazem parte interface da classe pois no pode seracessada externamente
Assinatura Deve ser definido o nome dos mtodos, se temtipo de retorno, e se recebe parmetros, a esteconjunto de informaes sobre o mtodo d-se onome de assinatura do mtodo
8/8/2019 Curso Bsico de Orientao a Objetos
44/71
44
Mensagens Uma mensagem uma solicitao feita porum 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 diretamenteassociado ao conceito de operao
A interao entre os objetos feita atravs datroca de mensagens
8/8/2019 Curso Bsico de Orientao a Objetos
45/71
45
Herana e Hierarquia
Hierarquia Quando vamos trabalhar com um grandeconjunto de classes de objetos, necessrioorganizar estas classes de maneira ordenada demodo que tenhamos uma hierarquia
Em uma hierarquia de classes teremos as classes
mais genricas no topo, e as mais especficas nabase.
8/8/2019 Curso Bsico de Orientao a Objetos
46/71
46
Hierarquia Automveis
automveis utilitrios (camionetes leves) utilitrios urbanos
utilitrios off-road automveis de passeio
passeio familia
passeio esportivo automveis de carga
carga inflamveis carga com frgirifico
8/8/2019 Curso Bsico de Orientao a Objetos
47/71
47
Herana e Hierarquia
Herana Em uma hierarquia de classes semelhantespodemos dizer que as classes mais especficasherdam as caractersticas das mais genricas, ouseja, todo automvel de passeio familia umautomvel de passeio
A classe de nvel superior na na associao deherana chamada de super-classe e a inferior desub-classe
Portanto automvel de passeio famlia umasub-classe de automvel de passeio
8/8/2019 Curso Bsico de Orientao a Objetos
48/71
48
Herana
8/8/2019 Curso Bsico de Orientao a Objetos
49/71
49
Herana e Hierarquia
Agregao
Composio
Herana x Agregao x Composio
8/8/2019 Curso Bsico de Orientao a Objetos
50/71
50
Agregao / Composio o princpio que permite o desenvolvedorconsiderar algo muito grande atravs doenfoque TODO-PARTE
Utilizado para definir regras de negcio Se a instncia do todo for removida, suas partestambm devero ser removidas (composio)
Se a instncia do todo for removida, suas partesno necessariamente devero ser removidas(agregao)
8/8/2019 Curso Bsico de Orientao a Objetos
51/71
51
Agregao Define uma "dependncia fraca" entre o todoe suas partes
Se o todo for removido, as suas partes
podero continuar existindo um mecanismo que permite a construo deuma classe agregada a partir de outras classescomponentes. Usa-se dizer que um objeto daclasse agregada (Todo) tem objetos das classescomponentes (Parte)
8/8/2019 Curso Bsico de Orientao a Objetos
52/71
52
8/8/2019 Curso Bsico de Orientao a Objetos
53/71
53
Composio Define uma "dependncia forte" o todo e suas
partes Se o todo deixar de existir, as suas partes
tambm deixam de existir
8/8/2019 Curso Bsico de Orientao a Objetos
54/71
54
Herana X Agregao x
8/8/2019 Curso Bsico de Orientao a Objetos
55/71
55
Herana X Agregao xComposio
Herana " um tipo de", as propriedades so herdadas deoutra classe
Associao "usam um(a)", um objeto envia uma mensagempara outro objeto
Composio "composto por", um objeto composto por outros
objeto
8/8/2019 Curso Bsico de Orientao a Objetos
56/71
56
Abstrao Abstrao o processo atravs do qual
detalhes so ignorados, para nosconcentrarmos nas caractersticas essenciais
A abstrao nos leva a representar os objetosde acordo com o ponto de vista e interesse dequem os representa
8/8/2019 Curso Bsico de Orientao a Objetos
57/71
57
Abstrao Para descrevermos um automvel (do ponto
de vista de um observador externo),identificamos a cor do mesmo, o nmero deportas, o tipo das rodas e pneus.
Quando identificamos o automvel apenas apartir destas caractersticas externas estamos
fazendo uma abstrao pois uma srie dedetalhes internos no estaro sendo descritos.
8/8/2019 Curso Bsico de Orientao a Objetos
58/71
58
Abstrao Ex: Ao modelarmos um objeto avio no
contexto de um sistema de marcao depassagens areas, no vai nos interessar acaracterstica nmero de turbinas do avio,mas ir nos interessar a caracterstica nmerode assentos disponveis
Ao ignorarmos algumas caractersticas norelevantes em um determinado contexto,estamos fazendo uma abstrao
8/8/2019 Curso Bsico de Orientao a Objetos
59/71
59
Encaplusamento o processo de ocultao das caractersticasinternas do objeto
O encapsulamento cuida para que certas
caractersticas no possam ser vistas oumodificadas externamente
8/8/2019 Curso Bsico de Orientao a Objetos
60/71
60
Encaplusamento Exemplo
Podemos dizer que o motor de um automvelest encapsulado, pois normalmente nopodemos ver ou alterar caractersticas do motor
Podemos ento utilizar um automvel semconhecer nada das complexidades do motor, queesto encapsuladas
8/8/2019 Curso Bsico de Orientao a Objetos
61/71
61
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 osmesmos sejam alterados erroneamente
Os dados s podero ser alterados pelas "funes"dos prrpios objetos
As "funes" dos objetos so chamadas deoperaes ou mtodos
P li fi
8/8/2019 Curso Bsico de Orientao a Objetos
62/71
62
Polimorfismo
a capacidade de objetos diferentes reagiremsegundo 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
P li fi
8/8/2019 Curso Bsico de Orientao a Objetos
63/71
63
Polimorfismo
Sobrecarga Atravs do mecanismo de sobrecarga, doismtodos de uma classe podem ter o mesmonome, desde que suas assinaturas sejamdiferentes.
Tal situao no gera conflito pois o compilador capaz de detectar qual mtodo deve serescolhido a partir da anlise dos argumentos domtodo.
P i t i
8/8/2019 Curso Bsico de Orientao a Objetos
64/71
64
Persistncia
Refere-se habilidade de um objeto existir
alm da execuo que o criou, ou seja, serarmazenado 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
8/8/2019 Curso Bsico de Orientao a Objetos
65/71
65
Anlise e
Desenvolvimento
Por que utilizar Orientao a
8/8/2019 Curso Bsico de Orientao a Objetos
66/71
66
q Objetos?
Quando bem empregada, a Orientao a Objetos trazdiversas 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).
A Orientao a Objetos um paradigma que pode ser
aplicado ao longo de todo o processo de construo dosoftware.
UML (Unified Modeling
8/8/2019 Curso Bsico de Orientao a Objetos
67/71
67
( gLanguage)
UML uma linguagem para especificao ,
construo , visualizao e documentao de sistemas de software.
UML no uma metodologia no diz quem devefazer o qu, quando e como UML pode ser usadosegundo diferentes metodologias, tais como RUP(Rational Unified Process), FDD (Feature DrivenDevelopment), etc.
UML no uma linguagem de programao
UML (Unified Modeling
8/8/2019 Curso Bsico de Orientao a Objetos
68/71
68
( gLanguage)
Modelos e Diagramas Um modelo uma representao em pequenaescala, numa perspectiva particular, de umsistema existente ou a criar
Ao longo do ciclo de vida de um sistema soconstrudos vrios modelos, sucessivamenterefinados e enriquecidos
Um modelo constitudo por um conjunto dediagramas (desenhos) consistentes entre si,
acompanhados de descries textuais doselementos que aparecem nos vrios diagramas
UML (Unified Modeling
8/8/2019 Curso Bsico de Orientao a Objetos
69/71
69
Language) Um diagrama uma vista sobre um modelo
O mesmo elemento (exemplo: classe) podeaparecer 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
8/8/2019 Curso Bsico de Orientao a Objetos
70/71
70
8/8/2019 Curso Bsico de Orientao a Objetos
71/71
71
F I M
Maurcio de Castro
SOLIS/[email protected] de Desenvolvimento de Sistemas em
Software Livre da SOLIS/UNIVATES