Você está na página 1de 49

Programao Orientada a Objetos

- Aula 03 -

Introduo

Viso Geral das Organizaes


As organizaes esto cada vez mais baseadas
em informao
As organizaes dependem cada vez mais de um
fluxo contnuo de informaes para lidar com
suas operaes
O volume e a diversidade de informaes dentro
das
organizaes
est
crescendo
mais
rapidamente do que a capacidade de process-las
e de fazer um bom uso delas

Introduo

Evoluo das Abordagens de Desenvolvimento


de Sistemas

Monoltico
Dcada de 60
Aplicaes/Sistemas eram pequenos e relativamente
simples
Linguagens simples (Fortran, Cobol)
Os desenvolvedores no tinham um mtodo para
desenvolver sistemas, utilizavam de sua criatividade
pessoal
A programao era considerada uma atividade
artesanal e criativa
Os cdigos do tipo Spaghetti e de difcil
manuteno

Introduo
Estruturado
Dcada de 70
Al Constantine e Yourdon criaram um mtodo de
desenvolvimento de sistemas que utilizava a funo
como seu bloco de construo. Este mtodo foi
denominado
anlise
e
desenho

estruturado.
Surgiu a programao modular
a manuteno dos sistemas

que facilitou

Introduo
Estruturado

Utilizao de diagramas grficos para representar


os fluxos de dados (DFD) e para representar
projetos de cdigos (Fluxogramas)
Dcada de 80, Peter Chen (criador do diagrama de
entidade e relacionamentos) e Ed Codd
(desenhista do banco de dados relacional) criando
um
mtodo
(Modelagem
de
Dados)
de
desenvolvimento de sistemas baseados em dados
O mtodo de desenvolvimento era baseado num
comportamento esttico

Introduo
Orientado a Objetos
Visa suprir as deficincias do mtodo estruturado
Explora o comportamento esttico e dinmico
Fornece ao desenvolvedor uma

perspectiva

ortogonal, permitindo administrar a complexidade


do domnio do problema e sua tecnologia de suporte
Facilita a administrao dos

dados

e o controle

das funes (cdigo)


Permite a produo de software mais flexvel e de
manuteno fcil

Programao Orientada a Objetos

A Complexidade faz parte da essncia do


software
Devemos utilizar de mecanismos que permitem
administrar a complexidade do software
A complexidade gera dificuldades
Muitas dificuldades encontradas no
desenvolvimento de um software podem surgir
devido a forma empregada para constru-lo

Programao Orientada a Objetos

Programar uma tarefa difcil e que sempre


vai depender da inteligncia, da lgica, da
criatividade e da experincia do
programador bem como da sua capacidade de
utilizar a ABSTRAO

Programao Orientada a Objetos


No uma soluo mgica
No apenas uma coleo de novos
recursos acrescentados a uma
linguagem de programao
um novo PARADIGMA

Programao Orientada a Objetos


Paradigma
definido como um conjunto de
teorias, padres e mtodos que, juntos,
representam um modo de organizar o
conhecimento. [Thomas Huhn, Structure
of Scientific Revolution, 1970]

Programao Orientada a Objetos

Para utilizar de forma eficiente as


facilidades propostas pela P.O.O.
necessrio que os desenvolvedores
adaptem suas percepes para um
enfoque totalmente diferente no que diz
respeito da modelagem e resoluo
de problemas

Programao Orientada a Objetos

A P.O.O. uma nova maneira de


pensar sobre o que significa fazer
clculos, de como organizar as
informaes dentro de um sistema e a
forma pela qual ocorre a descrio da
viso (modelo) da realidade.

Princpios da P.O.O.

1o. Princpio
Atributos (Dados)
Objeto
Mtodos(Cdigo)

Princpios da P.O.O.
M1

M2

M8

M3

DADOS
M4

M7
M6

M5

Definio Grfica de
um Objeto

M1, M2, M3, M4, M5, M6, M7,M8


(Mtodos -Cdigo)

Princpios da P.O.O.

2o.Princpio

Ocultao de Informaes: o
objeto que contm os atributos(dados)
define quais os servios que esto
disponveis para outro objeto. Nenhum
objeto ter acesso ou conhecimento
dos atributos(dados) ou a forma pela
qual o servio realizado pelo
mtodo(cdigo). Este mecanismo
denominado de Encapsulamento.

Princpios da P.O.O.

3o.Princpio

Passagem de Mensagens: um objeto pode


comunicar com outro objeto atravs de um
mecanismo de mensagem. A troca de mensagens
feita por meio de Servios Pblicos, que
representam mtodos de um objeto que podem ser
chamados por um outro objeto. O mecanismo de
troca de mensagens feito por meio de uma
Interface (protocolos) que representa a chamada
de um prottipo de servio.

Princpios da P.O.O.
M1

M2

M8

M3

O Objeto B solicita um
servio para o Objeto A

DADOS
M4

M7
M6

M5

Mensagem

Objeto A
- Agente -

Objeto B
- Cliente M1

M2

M8

M3

DADOS
M4

M7
M6

M5

Princpios da P.O.O.

4o.Princpio

Ligao Posterior: representa o suporte


necessrio para que um determinado
mtodo(cdigo) de um objeto seja chamado
por uma mensagem oriunda de um outro objeto
em tempo de execuo.

Princpios da P.O.O.

5o.Princpio

Delegao: a solicitao de um servio


transmitida via mecanismo de mensagem entre o
objeto cliente (utiliza o servio) a um objeto agente
(prestador do servio). Embora a pela perspectiva do
cliente, o agente pode realizar os servios
solicitados. Contudo, a solicitao do servio pode
ser transmitida continuamente at que ela atinja o
objeto que tenha no s os atributos(dados) como
o mtodo(cdigo) para realizar o servio.

Princpios da P.O.O.
M1

M2

M8

M3

Mensagem

DADOS

Objeto B
- Agente -

M4

M7
M6

M5

M1

Objeto A
- Cliente -

M2

M8

M3

DADOS
M4

M7
M6

M1

- Cliente -

M2

M8

M3

DADOS

Objeto C
- Agente -

M5

M4

M7
M6

M5

Mensagem

Princpios da P.O.O.

6o.Princpio

Classe/Instncia/Objeto: Todos os objetos


so instncias de uma classe. Instncias podem
ser criadas ou destrudas em tempo de execuo.
Consideraes:
a forma como um objeto prov um servio
determinada pela classe da qual o objeto instncia
todos os objetos de uma classe utilizam o mesmo
mtodo em resposta a uma mesma solicitao de
servio.

Princpios da P.O.O.

7o.Princpio

Generalizao sem polimorfismo: as classes


podem ser organizadas por meio de uma estrutura de
herana hierrquica. Nesta estrutura, a subclasse
herdar os atributos, os relacionamentos e os
mtodos da superclasse, que se encontra no ponto
mais alto da estrutura.
Pessoa

Cliente

Vendedor

Princpios da P.O.O.

8o.Princpio

Generalizao com polimorfismo: as classes podem


ser organizadas por meio de uma estrutura de herana
hierrquica. Nesta estrutura, a subclasse herdar os
atributos, os relacionamentos e os mtodos da
superclasse, que se encontra no ponto mais alto da estrutura.
Entretanto, uma subclasse poder criar seu prprio
mtodo(cdigo) para substituir um mtodo herdado atravs
superclasse.

Funcionario

Mensalista

Horista

Princpios da P.O.O.

9o.Princpio

Associaes: representam as ligaes entre


os objetos que podem ser feitas atravs de uma
associao binria ou atravs de uma agregao.
Pedido de
Venda
1

Agregao

1..*

Item de
Pedido

Produto
Associao
Binria

Classe/Instncia/Objeto
Caneta

Tamanho
Tipo de Escrita
Cor
Constituio
Escrever()

Nome da Classe
Definio dos Atributos

Definio do Mtodo

Classe/Instncia/Objeto
Tamanho
Tipo de Escrita

Fina

Cor

Azul

Constituio

Tamanho

Pequena

Plstico

Escrever( )

Objeto Caneta 1

Tipo de Escrita

Caneta

Tamanho
Tipo de Escrita
Cor
Constituio
Escrever()
Tamanho
Tipo de Escrita

Grande
Grossa

Cor

Azul

Constituio

Ferro

Escrever( )

Objeto Caneta 2

Pequena
Fina
Vermelha

Cor
Constituio

Madeira

Escrever( )

Objeto Caneta 3

- Exemplo Buzina -

Modelo de uma buzina

OFF

ON

Buzina

A buzina pode ser acionada

acionar

OFF

ON

Quando a buzina acionada :


Ela toca, se estiver em ON ( ligada )
Ela no toca, se estiver no OFF ( desligada )

Buzina

A buzina pode ser ligada ou


desligada
acionar
desligar

OFF

ligar

ON

Buzina
Condies para que a buzina seja ligada ou desligada :
Para que ela seja desligada, necessrio estar ligada - desligar
Para que ela seja ligada, necessrio estar desligada - ligar

Para ligar ou desligar a buzina,


necessrio saber seu estado.
acionar
ligar

desligar

OFF

ON

verificar o estado
O estado da buzina pode ser :
ON ligada ( 1 )
OFF desligada ( 0 )

Buzina

Acionar uma ao !

acionar
desligar

OFF

ligar

ON

verificar o estado

Buzina

Ligar uma ao !

2
desligar

OFF

acionar
ligar

ON

verificar o estado

Buzina

Desligar uma ao !

3
desligar

OFF

acionar
ligar

ON

verificar o estado

Buzina

Verificar o estado uma ao !


( Obter Estado )
3

2
desligar

OFF

acionar

ligar

ON
4
verificar o estado ( obter estado ) Buzina

Portanto, numa anlise inicial, vemos


4 aes que podem ser realizadas
1
2
3
4

Acionar
So aes que a buzina realiza ou sofre
Ligar
seus efeitos !
Desligar
A estas aes denominamos mtodos.
Obter Estado
3

2
ligar

desligar

OFF

acionar

ON
4
obter estado

Buzina

Buzina no estado de desligada !

ligar

desligar

OFF

acionar

ON
4
verificar o estado

Buzina

Buzina no estado de ligada !

ligar

desligar

OFF

acionar

ON
4
verificar o estado

Buzina

O estado da buzina um atributo !


( o seu valor varia no tempo )
3

2
ligar

desligar

OFF

acionar

ON
4
verificar o estado

Buzina

Acionar
Ligar
So mtodos da buzina !
Desligar
Obter Estado

2
ligar

desligar

OFF

acionar

ON
4
verificar o estado

Buzina

Estado

atributo da buzina !

2
ligar

desligar

OFF

acionar

ON
4
verificar o estado

Buzina

Portanto em relao a buzina, temos :


Atributos

Mtodos

Estado
Acionar
Ligar
Desligar
Obter Estado

2
ligar

desligar

OFF

acionar

ON
4
verificar o estado

Buzina

Representao da Classe Buzina


3

2
ligar

desligar

OFF

acionar

ON
4
Obter estado

Buzina
- Estado
+ Buzina( )
+ ligar( )
+ desligar( )
+ acionar( )
+ obterEstado( )

Modelagem
UML

Buzina

Modelagem da Classe Buzina


Buzina
- Estado : int
+ Buzina( )

Nome da Classe
Definio dos
Atributos

+ ligar( ) : void
+ desligar( ) : void
+ acionar( ) : void
+ obterEstado( ) : int

Definio
dos
Mtodos

Definio da Classe Buzina (Buzina.java)


Definio de uma classe (Atributos e Mtodos)

public class Buzina{

public
Ocultao
de void acionar() {
int cont;
Informao
private int Estado; (encapsulamento)
public Buzina() {
Estado=0;
}

public void ligar(){


Estado=1;
}
public void desligar {
Estado=0;
}

if (Estado==1)
for(cont=1;cont<=30;cont++)
System.out.println(FonFon);

public int obterEstado() {


return (Estado);
}
} // fim da classe

Definio da Aplicao (Aplic.java)


class Aplic{
public static void main (String arg[]) {
Buzina FonFon=new Buzina(); //instanciao
Scanner Entrada = new Scanner(System.in);
String Opcao;
System.out.println("Buzina desligada");
System.out.println(\nDigite sua opcao <D> Desligar
<L> Ligar <A> Acionar <F> Finalizar");
Opcao=Entrada.next();

Definio da Aplicao (Aplic.java)


while( !Opcao.equals("f") && !Opcao.equals("F")) {
if (Opcao.equals("l") || Opcao.equals("L"))
if (FonFon.obterEstado() == 0) {
FonFon.ligar(); //passagem de mensagem
System.out.println("Buzina Ligada");
}
if (Opcao.equals("d") | | Opcao.equals("D"))
if (FonFon.obterEstado() == 1) {
FonFon.desligar(); //passagem de mensagem
System.out.println("Buzina Desligada");
}

Definio da Aplicao (Aplic.java)


if (Opcao.equals("a") || Opcao.equals("A")){
FonFon.acionar(); //passagem de mensagem
}
System.out.println(\nDigite sua opcao <d> Desligar
<l> Ligar <a> Acionar <f> Finalizar");
Opcao=Entrada.next();

} // fim while
} // fim do main

} // fim da classe Aplic

Representao do Objeto Fon_Fon


acio
nar
(

)
(
a
in
z
u
B
d
e
s
l
i
g
a
r
()

Estado
0

l
i
g
a
r
()

obterEstado( )

Estado Inicial - Buzina Desligada

Você também pode gostar