Você está na página 1de 53

Fundamentos de Orientao a Objetos

Prof. Juliana Pinheiro Campos E-mail: jupcampos@gmail.com


ENG10082 Programao II Crditos: Prof. Gustavo Willam Pereira e Prof. Clayton Vieira Fraga Filho

Qualquer coisa do mundo real com limite e ide n t ida de bem definidos. Um objeto pode ser uma pessoa, local ou objeto. Basicamente, qualquer conceito que seja aplicvel ao projeto do sistema. Exemplos:

Pode representar:
o o o

Uma coisa visvel ou tangvel Algo que pode ser compreendido intelectualmente Algo para o qual o pensamento ou ao pode ser dirigido

A T E N O !!! Objetos do mundo real no so os nicos tipos de objetos que so de interesse durante o desenvolvimento do software;

O b je t o

J a c o b s o n e t a l. define "objetos de controle" como "aqueles que unem o fluxo de eventos e, portanto, fazem a comunicao com outros objetos S m ith e T o c k e y fazem uma definio mais precisa, e sugerem que "u m o b je t o re pre s e nt a u m it e m in div idu a l, ide n t ific v e l, u n ida de o u e n tida de , re a l o u a b s t ra t a , c o m u m pa pe l b e m de fin ido no do m n io do pro b le m a "

O b je t o

Um objeto uma entidade que tem e s t a do e c o m po rt a m e n t o . A estrutura e o comportamento de objetos similares so definidos em sua classe comum.

O e s t a do de um objeto considera todas as propriedades (geralmente esttico) do objeto mais os valores atuais (normalmente dinmico) de cada uma dessas propriedades. O c o m po rt a m e n t o como um objeto age e reage (ao), em termos de mudanas e seu estado de passagem de mensagem.

C la s s e

Representa a abstrao de um conjunto de o b je t o s que compartilham uma estrutura comum: tipos de caractersticas (propriedades) e de comportamento.

Classe Veculo

C la s s e

Classe Funcionrio

C la s s e

Exemplo: simulao de trfego Tipos de entidades

Carros Motocicletas Pedestres Outros

C la s s e

Exemplo: simulao de trfego O que um carro nesse contexto: classe ou objeto? Perguntas teis:

Qual a cor do carro? Onde ele est nesse momento?

A t rib u t o

uma caracterstica particular da classe. Cada atributo possui um valor para cada instncia de objeto. A classe define quais campos um objeto tem, mas todo objeto armazena seu prprio conjunto de valores (o e s ta do do objeto). Ex: atributos da classe funcionrio

10

O b je t o

Um objeto de software mantm seu e s t a do em uma ou mais de suas propriedades ou atributos (variveis), e implementa seu c o m po rt a m e n t o atravs de seus mtodos.

Mtodos (comportamento)

Propriedades (estado)

O b je t o
11

O b je t o

Um sistema pode conter um ou inmeros objetos ativos. Cada objeto ativo no sistema em particular tambm chamado de in s t n c ia . As diferentes instncias possuem seu prprio estado. Representa cada ocorrncia de um o b je to de uma c la s s e especfica. Instanciao: criao de um objeto de uma determinada classe.

12

O b je t o

Exemplo: uma instncia da classe Funcionrio.

13

O b je t o

Exemplo: vrias instncias de pessoas.

14

O b je t o

Cada instncia de pessoa possui um estado diferente em particular, como visto na ltima figura. Alm do estado, a instncia possui seus mtodos (comportamento) que operam sobre o prprio estado. Em outras palavras, para pular, cada pessoa vai fazer uma determinada fora dependendo da sua idade, altura e peso. A idia que cada objeto seja responsvel por seus dados (estado) e seja capaz de realizar as prprias operaes que lhe foram atribudas (comportamento).
15

Um objeto por si s no significa muito em um sistema. Para ter algum sentido e valor esses objetos precisam interagir e comunicar-se entre si. Os objetos se comunicam por meio de m e ns a g e ns . Uma mensagem uma solicitao feita por um objeto A a um objeto B; Se A envia uma mensagem para B, podemos entender como o objeto A executando um mtodo do objeto B. Como resultado desta solicitao, o objeto B ir modificar seu estado ou ir retornar algum valor; 16

As mensagens so compostas por trs partes: o Objeto a quem a mensagem endereada o Nome do mtodo a ser chamado o Parmetros que o mtodo recebe

17

Os mtodos especificam a maneira pela qual os dados de um objeto so manipulados (comportamento) Uma especificao dos passos pelos quais uma o pe ra o deve ser executada. Operao uma ao que um objeto executa. Ele uma implementao de uma o pe ra o . Diferentes mtodos podem ser usados para executar a mesma o pe ra o . Os mtodos de um tipo de objeto referenciam somente as estruturas de dados desse tipo de objeto. Os mtodos so similares s funes e procedimentos da programao estruturada.

18

Uma operao denota um servio que uma classe oferece a seus clientes. Na prtica, o cliente normalmente faz cinco tipos de operaes sobre um objeto. Os trs tipos mais comuns de operaes so as seguintes: o Mo dific a do r: uma operao que altera o estado de um objeto; o S e le t o r: uma operao que acessa o estado de um objeto, mas no altera o estado; o It e ra t o r: uma operao que permite que todas as partes de um objeto sejam acessadas em qualquer ordem bem definida.

19

Dois outros tipos de operaes so comuns, pois eles representam a infra-estrutura necessria para criar e destruir instncias de uma classe. o C o n s t ru to r: uma operao que cria um objeto e / ou inicializa seu estado; o De s t ru ido r: uma operao que libera o estado de um objeto e / ou destri o prprio objeto.

20

Atributos definem os dados enquanto os mtodos definem a funcionalidade. Atributos so definidos por seus nomes e tipos (por exemplo, in te g e r, s trin g , d a te ). Mtodos so definidos escrevendo o cdigo.

21

Modelos so representaes simplificadas de objetos, itens, tarefas, processos, conceitos, idias, etc... Os modelos so aqui descritos usando pseudocdigo em portugus. O pseudocdigo somente uma ferramenta prtica para expresso dos modelos de forma concisa e formal mas sem entrar nos detalhes de implementao de classes em Java.

O modelo aqui descrito representa uma conta bancria simplificada, que somente representa o nome do correntista, o saldo e se a conta especial ou no. Aspectos prticos encontrados em contas de bancos reais (senhas, taxas, impostos, etc...) foram deixados de lado em nome da simplicidade. A figura a seguir mostra os dados e as operaes deste modelo. E o modelo exibido em pseudocdigo exibido a seguir.

Dados (atributos) e operaes (mtodos)

Mtodos podem ter parmetros

Modelo conta bancria em pseudocdigo

Modelo conta bancria em pseudocdigo (cont)

Modelo conta bancria em pseudocdigo (cont)

O modelo aqui descrito ser utilizado para representar uma data, podendo ser datas de eventos, aniversrios, etc... que deve conter dados para representar o dia, o ms e o ano. Para este modelo, supomos que o valor do ms representado por um nmero inteiro entre 1 e 12, inclusive (em vez de ser representando pelo nome em extenso do ms, por exemplo). Considerando que existem datas vlidas e no vlidas, implementamos tambm operaes para identificar e distinguir datas vlidas e no vlidas.

Dados (atributos) e operaes (mtodos)

Modelo data em pseudocdigo

Modelo data em pseudocdigo (cont)

Vantagens do encapsulamento

A restrio aos valores que podem ser representados pelos dados:

Dados a serem representados pelo modelo Data no podem assumir qualquer valor

datas no-vlidas so identificadas e os valores dos dados dia, ms e ano so inicializados correspondentemente, de forma que se a data passada no for vlida, os dados sempre iro valer zero.

desejvel que estes dados sejam manipulveis somente pelas operaes do modelo.

A operao inicializaData recebe argumentos, e usa os valores passados como argumentos para efetuar alguma operao, neste caso, manipulao dos dados do modelo. Se no fosse possvel passar argumentos para a operao, no teramos como inicializar os dados do modelo.

Desta forma, ou os dados encapsulados contm uma data vlida ou todos contm zero - no possvel ter o dia e o ano corretos e o ms incorreto.

possvel chamar operaes de dentro de operaes

Quando a operao dataVlida chamada, o seu resultado verificado e parte da operao inicializaData executada dependendo do resultado. Os argumentos passados para a operao dataVlida so os mesmos passados para a operao inicializaData - a operao inicializaData d e le g o u a verificao de validade operao dataVlida. Desta forma, quando o modelo for usado, poderemos inicializar uma data diretamente ou verificar se ela vlida sem precisar inicializar.

Programadores que utilizam o paradigma de POO criam e usam objetos a partir de classes, que esto relacionadas diretamente com os modelos descritos anteriormente. Classes so estruturas para conter, para determinado modelo, os dados que devem ser representados e as operaes que devem ser efetuadas com estes dados. Os conceitos de classe e objeto esto entrelaados: no podemos falar de um objeto sem levar em conta a sua classe. As classes definem t ipo s que podem ser criados.

34

A interface de uma classe fornece seu ponto de vista exterior e, portanto, enfatiza a abstrao, escondendo a sua estrutura e os segredos de seu comportamento c a ix a -pre t a Consiste basicamente das declaraes de todas os mtodos aplicveis a instncias da classe, mas pode tambm incluir constantes, propriedades necessrias para completar a abstrao. J a implementao de uma classe a sua viso interna, que engloba os segredos de seu comportamento.A implementao de uma classe consiste basicamente da implementao de todas os mtodos (que realizam as operaes) definidos na interface da classe.

35

Podemos ainda dividir a interface de uma classe em quatro partes: o P b lic o : a declarao de que est acessvel a todos os clientes; o P ro te g ido : a declarao de que s acessvel para a prpria classe e suas subclasses; o P riv a do : a declarao de que s acessvel para a prpria classe; o P a c o te : a declarao de que s acessvel por classes no mesmo pacote ou local;
Mo dific a do r Public Protected Sem Modificador (Padro) (Pacote) Private sim no C la s s e sim sim sim P a c ote sim sim sim S u b c la s s e sim sim sim (dentro do pacote) no (fora do pacote) no no
36

G lo b a lm e n te sim no no

Mecanismo utilizado para disponibilizar mtodos que operam sobre os dados e que protegem o acesso direto indevido aos atributos de uma instncia fora da classe onde estes foram declarados. Conhecido tambm como ocultao de informaes (in fo rm a tio n h id in g ) O encapsulamento protege os dados do objeto do uso arbitrrio e no-intencional.

37

O encapsulamento o resultado (ou ato) de ocultar do usurio os detalhes da implementao de um objeto. O encapsulamento importante porque separa a maneira como um objeto se comporta da maneira como ele implementado. A definio de como implementar os conhecimentos ou aes de uma classe, sem informar como isto feito. No utilizar o encapsulamento permite que um objeto B viole a integridade do A, pela modificao direta de seu estado. Modelos que encapsulam os dados possibilitam a criao de programas com menos erros e mais clareza. Encapsulamento de dados em modelos deve ser um dos principais objetivos do programador que use linguagens orientadas a objetos. 38

S a ldo de u m a c o n t a b a n c ria O saldo no pode ser alterado ou manipulado diretamente, mas sim atravs de operaes adequadas para isso, como lanamentos de dbitos e crditos; A alterao direta do saldo causaria um problema de clculos e inconsistncia e falta de confiabilidade de dados;

O encapsulamento permite esconder o saldo e definir que mtodos adequados para operar sobre os dados dos objetos daquela classe. O uso de encapsulamento evita ainda, que um programa torne-se to interdependente que uma pequena mudana tenha grandes efeitos colaterais.
39

Herana um mecanismo da OO que permite criar novas classes a partir de classes j existentes, aproveitando-se das caractersticas existentes na classe a ser estendida. Relacionamento entre itens gerais (chamados de superclasses ou classe-me) e tipos mas especficos destes itens (chamados subclasses ou classes-filha).

Superclasse: classe estendida por outra classe. Subclasse: classe que estende outra classe.

Comumente chamado de relacionamento um ou um tipo de E x e m plo : a lu n o -3 -pe ro do um a lun o u m a pe s s o a

40

Classe abstrata

nome salrio F u n c io n rio

Gerente

Vendedor

Diretor

Diretor de vendas

Diretor de TI

41

Classe abstrata

Uma classe abstrata desenvolvida para representar entidades e conceitos abstratos. A classe abstrata sempre uma superclasse que no possui instncias. Ela define um modelo (te m p la te ) para uma funcionalidade e fornece uma implementao incompleta - a parte genrica dessa funcionalidade - que compartilhada por um grupo de classes derivadas. Cada uma das classes derivadas completa a funcionalidade da classe abstrata adicionando um comportamento especfico. Uma classe abstrata normalmente possui mtodos abstratos. Esses mtodos so implementados nas suas classes derivadas concretas com o objetivo de definir o comportamento especfico. O mtodo abstrato define apenas a assinatura do mtodo e, portanto, no contm cdigo.
42

Vantagens da utilizao de herana


Evitar duplicao de cdigo Facilitar a reutilizao de cdigo Facilitar a manuteno Extensibilidade

43

Classes definem tipos

Subclasses definem subtipos

Variveis podem armazenar objetos do seu tipo declarado ou de qualquer subtipo do seu tipo declarado. S u b s t itu i o : Os objetos de um subtipo podem ser utilizados onde objetos de um supertipo sejam esperados.

44

Interfaces

um conjunto de especificaes de servios (operaes); Um servio tem especificao e implementao;

A especificao (assinaturas dos mtodos, implementao) define o que faz o servio (operao); A implementao define como o servio feito (mtodo);

sem

Uma interface pode ser representada na UML conforme apresentado a seguir:

Cadastro

o u

<<interface>> Cadastro

45

Interfaces

a especificao de um tipo (nome de tipo e um conjunto de mtodos) que no define nenhuma implementao para os mtodos. Impe especificao do que uma classe deve oferecer e implementar. Uma interface no pode ser instanciada; Uma classe implementa uma ou mais interface; Uma classe pode ao mesmo tempo herdar de uma classe e implementar uma interface;

46

Interfaces

Interface como tipos (vantagem):

A subclasse herda um tipo, ou seja, uma interface define um tipo da mesma maneira que uma classe define. Isso significa que as variveis podem ser declaradas como tipos de interface, mesmo que nenhum objeto desse tipo possa existir. Principal caracterstica das interfaces: Separa a definio da funcionalidade da sua implementao.

Interface como especificaes (vantagem):

47

Os subtipos, alm de herdarem todas as caractersticas de seus supertipos, tambm podem adicionar mais caractersticas, seja na forma de variveis e/ou mtodos adicionais, bem como reescrever mtodos j existentes na superclasse (polimorfismo). A herana permite vrios nveis na hierarquia de classes, podendo criar tantos subtipos quanto necessrio, at se chegar no nvel de especializao desejado. A herana introduz complexidade, o que no desejvel. Identificar uma hierarquia de herana durante o design pe restries desnecessrias implementao, portanto a t e n o . U s e c o m m o de ra o .

48

Classes abstratas

Possui mtodos abstratos ou no (pode ter implementao de alguns mtodos) Possui atributos e constantes Todos os mtodos so abstratos S possui constantes

Interfaces

49

He ra n a m lt ipla Uma classe pode herdar atributos e operaes de vrias superclasses Pode levar a conflitos quando atributos e operaes de superclasses diferentes tem o mesmo nome e semnticas diferentes. Torna a hierarquia de classes mais complexa
Livro +autor +edicao +dataPublicacao +ISBN GravacaoDeVoz +narrador +duracao +dataGravacao

LivroEmAudio +fitas: Fitas[1..*]

Fitas
50

Formalmente polimorfismo vem do grego e significa formas.

vrias

No caso da OO, polimorfismo denota uma situao na qual um objeto pode se comportar de maneiras diferentes ao receber uma mensagem, dependendo do seu tipo de criao. O polimorfismo alcanado com auxlio do uso de herana nas classes e a reescrita (o v e rrid in g ) de mtodos das superclasses nas suas subclasses. Duas subclasses de uma mesma classe podem ter implementaes completamente diferentes de um mesmo mtodo, o que leva os objetos a se comportarem de forma diferente, dependendo do seu tipo (classe).

51

nome salrio F u n c io n rio

Gerente

Vendedor

Diretor

O clculo do salrio do vendedor pode ser diferente do clculo de salrio do diretor de vendas. O mtodo da classe filha se sobrepe (o v e rride s ) da classe me

Diretor de vendas

Diretor de TI

52

O polimorfismo nos permite decidir qual dos mtodos ser usado em tempo de execuo. Com s o b re c a rg a (overloading), podemos decidir qual dos mtodos ser usado em tempo de compilao, distinguindo pelos parmetros passados.
Impressao +imprimir(doc: DOC) +imprimir(pdf: PDF) +imprimir(txt: TXT) +imprimir(ppt: PPT)

53

Você também pode gostar