apostila-orientacao objeto object pascal

Upload: ranieri-de-souza

Post on 08-Jul-2015

532 views

Category:

Documents


2 download

TRANSCRIPT

APOSTILA

DE

ORIENTAO A OBJETOS

DEPARTAMENTO DE CINCIA DA COMPUTAO PROFA. GILENE BORGES GOMES [email protected] http://www.gomeshp.com.br

APOSTILA DE ORIENTAO A OBJETOS__________________________________________________________________ Profa. Gilene Borges Gomes ___

ndice

2

APOSTILA DE ORIENTAO A OBJETOS__________________________________________________________________ Profa. Gilene Borges Gomes ___

nome do objeto : nome da classe

1. Introduo a Orientao a Objetos

atributo 1 : valor atributo 2 : valor Uma abordagem tpica usada no desenvolvimento de programas complexos consiste em decompor os programas em diversos mdulos e dividir cada mdulo em diversas funes. Cada funo responsvel por parte da soluo do problema. Esta abordagem de desenvolvimento se baseia na decomposio funcional. Embora a decomposio funcional tenha sido amplamente utilizada nos ltimos anos, apresenta algumas deficincias, tais como o fraco acoplamento entre dados e funes. A orientao a objetos uma tecnologia de desenvolvimento composta por metodologias e linguagens usadas na anlise, no projeto e na implementao de programas. Apesar de existir h dcadas, s recentemente a orientao a objetos adquiriu popularidade. Em parte esta popularidade decorre do uso crescente de interfaces grficas e da arquitetura distribuda dos programas atuais, caractersticas que so adequadamente suportadas pela orientao a objetos. Os programas desenvolvidos usando-se a orientao a objetos so compostos por mdulos cujos dados e funes so fortemente acoplados. Estes mdulos so denominados objetos e, em cada um deles, temos dados e funes. As funes so denominadas mtodos e contm o cdigo responsvel pelos servios providos pelos objetos. Os dados, por sua vez, s podem ser acessados atravs do cdigo presente nos mtodos do objeto. Por isso, costuma-se dizer que os dados so encapsulados. Fernando Albuquerque. Os principais conceitos de orientao a objetos so: objetos, classes, atributos, operaes e mensagens, descritos a seguir:

1.1. Objetos

Um objeto representa um elemento que pode ser identificado de maneira nica. Em nvel apropriado de abstrao1, praticamente tudo pode ser considerado como objeto. Assim, elementos especficos como pessoas, organizaes, mquinas ou eventos podem ser considerados objetos. Um objeto tem estado, comportamento e identidade; a estrutura e comportamento de objetos similares so definidos em suas classes comuns. Um objeto a instncia de uma classe. Os objetos que so instncias de uma mesma classe armazenam os mesmos tipos de informaes e apresentam o mesmo comportamento. A seguir so apresentadas trs notaes para representar um objeto: nome do objeto nome do objeto : nome da classe

1

Veja mais detalhes no item 5. Princpios bsicos da orientao a objetos.

3

APOSTILA DE ORIENTAO A OBJETOS__________________________________________________________________ Profa. Gilene Borges Gomes ___

1.2. Classes

As classes so tipos de objetos que descrevem as informaes armazenadas e os servios (mtodos) providos por um objeto. Em outras palavras, so padres a partir dos quais os objetos so criados. Uma classe um conjunto de objetos que compartilham uma estrutura comum (atributos) e um procedimento comum (operaes). Uma classe abstrata uma classe que no possui instncias diretas mas cujas descendentes, sim. Uma classe concreta uma classe instancivel; isto , pode ter instncias diretas. Uma classe direta pode ter subclasses abstratas (mas estas, por sua vez, devem possuir descendentes concretos). As classes so organizadas em nveis hierrquicos compartilhando estruturas e comportamentos comuns e so associadas a outras classes2. As classes definem os valores de atributos relativos a cada instncia de objetos e os mtodos que cada objeto executa ou a que se submete. Duas notaes para representar uma classe so apresentadas a seguir: nome da classe atributos mtodos nome da classe

1.3. Atributos

Os atributos so as caractersticas do objeto. Cada atributo tem um valor para cada instncia do objeto. Este valor deve ser um valor de dado puro, no um objeto. Para cada atributo, deve ser definido um nome e o tipo de dado. Opcionalmente, pode ser definido um valor default. Os atributos so representados no segundo tero da notao grfica de classe. Na notao grfica de objetos, estes devem ser representados com os respectivos valores de atributos.

1.4. Mtodos

Operaes ou mtodos so as funes ou transformaes que podem ser aplicados em ou por um objeto numa classe. Todos os objetos numa classe compartilham os mesmos mtodos. Cada mtodo tem um objeto alvo como um argumento implcito. Um mtodo pode ter argumentos em adio ao seu objeto alvo, os quais parametrizam o mtodo.2

Mais detalhes no item 3. Tipos de associao entre classes.

4

APOSTILA DE ORIENTAO A OBJETOS__________________________________________________________________ Profa. Gilene Borges Gomes ___

O mtodo parte da classe e no parte do objeto. O mtodo pode no ser parte da classe; mas ser uma herana3 de uma superclasse na hierarquia de classes. Exemplo de classes com alguns de seus atributos e mtodos. Toca-fitas marca modelo ano proprietrio situao ligar gravar tocar avanar parar desligar Avio marca modelo ano situao decolar aterrizar planar ligar-motor acelerar frear Polgonos vrtice cor da borda cor do interior desenhar apagar mover nome da classe atributos

mtodos

1.5. Mensagens

Os objetos se comunicam entre si atravs da mensagem. A mensagem especifica que um determinado mtodo de um objeto necessita utilizar um ou mais mtodos de outro objeto. Podem ser passados objetos como parmetro, e, opcionalmente, algum resultado ou valor pode ser retornado. As mensagens especificam que os mtodos devem ser executados, no como estes mtodos deve ser executados.

1.6. Porque usar objetos?

As vantagens de se usar objetos como blocos para a construo de aplicaes so muitas. Podese citar: Simplicidade: os objetos escondem a complexidade do cdigo. Pode-se criar uma complexa aplicao grfica usando botes, janelas, barras de rolamento, etc., sem conhecer a complexidade do cdigo utilizado para cri-los. Reutilizao de cdigo: um objeto, depois de criado, pode ser reutilizado por outras aplicaes, ter suas funes estendidas e serem usados como blocos fundamentais em sistemas mais complexos. Integridade dos dados: devido ao uso do encapsulamento4.

1.7. Exerccios 01

1.

Defina os principais conceitos da Orientao a Objetos?

3 4

Mais detalhes no item 3. Tipos de associao entre classes. Veja mais detalhes no item 5. Princpios bsicos da orientao a objetos.

5

APOSTILA DE ORIENTAO A OBJETOS__________________________________________________________________ Profa. Gilene Borges Gomes ___

2. 3. 4.

Quais so as vantagens da Orientao a Objetos? Qual a diferena entre classe abstrata e classe concreta? Defina as classes, com seus atributos e mtodos, para os objetos abaixo: a) um gato b) Gol, carro de uma pessoa c) "Conceitos de Orientao a Objetos", livro a venda em uma livraria d) Maria, professora em uma universidade Defina as classes, com seus atributos e mtodos, para os objetos abaixo: a) "Engenharia de software", livro em uma biblioteca b) Corsa, carro a venda em uma concessionria c) Joo, funcionrio de uma universidade d) uma janela do Windows

5.

6

APOSTILA DE ORIENTAO A OBJETOS__________________________________________________________________ Profa. Gilene Borges Gomes ___

2. Introduo ao Object PascalOs comandos utilizados em Object Pascal so os mesmos utilizados na linguagem Pascal, pois Object Pascal a linguagem Pascal com suporte a orientao a objetos. Object Pascal a linguagem utilizada no ambiente de desenvolvimento Delphi.

2.1. Criar uma classe

A classe deve ser definida na seo type do programa. O nome da classe (retangulo) vem seguida do sinal de igual (=) e a palavra reservada object5. Logo a seguir so definidos os atributos da classe, que so: altura e largura. Posteriormente o tipo do mtodo (function ou procedure) definido, seguido do nome do mtodo (area) e seus parmetros. Se for uma funo deve vir especificado o tipo de retorno (real). A definio da classe deve ser finalizada com a palavra reservada end.type retangulo = object { definio de uma classe retangulo } altura : real; largura : real; function area : real; end;

2.2. Criar um objeto

O objeto deve ser definido na seo var do programa. O nome do objeto (retang) vem seguido de dois-pontos (:) e o nome da classe (retangulo).var retang : retangulo;

2.3. Implementar uma operao (mtodo)

O cabealho do mtodo deve ser idntico ao que foi definido na classe, acrescido pelo nome da classe (retangulo) antes do nome do mtodo (area).Function retangulo.area : real; begin area := altura * largura; end;

2.4. Utilizar os atributos e mtodos de um objeto5

Para definir uma classe no ambiente Delphi utilizada a palavra reservada class.

7

APOSTILA DE ORIENTAO A OBJETOS__________________________________________________________________ Profa. Gilene Borges Gomes ___

Para referenciar a um atributo de um objeto, informe o nome do objeto (retang), ponto (.) e nome do atributo (largura):retang.largura;

Para chamar um mtodo de um objeto, informe o nome do objeto (retang), ponto (.) e nome do mtodo:retang.area;

2.5. Exemplo de um programa orientado a objetos Fazer um programa que cria uma classe retangulo que tem dois atributos (altura e largura) e um mtodo (area). O mtodo area retorna o clculo da area (altura * largura). O programa deve solicitar os valores de altura e largura e mostrar o valor da area do retangulo. Program area_retang; Uses crt; type retangulo = object altura : real; largura : real; function area : real; end; var retang : retangulo; ar : real; Function retangulo.area : real; begin area := altura * largura; end; begin { definio do objeto } { implementao do mtodo } { definio de uma classe retangulo }

{ incio do programa principal } clrscr; write ( Digite a altura do retngulo: ); readln (retang.altura); write ( Digite a largura do retngulo: ); readln (retang.largura); ar := retang.area; writeln ( Area calculada : , ar:2:2); readkey;

end.

2.6. Exerccios 01

8

APOSTILA DE ORIENTAO A OBJETOS__________________________________________________________________ Profa. Gilene Borges Gomes ___

1. Crie uma classe retangulo com dois atributos: altura e largura; e um mtodo: calc_per; o qual retorna o clculo do permetro de um retngulo. Fazer um programa para ler a altura e largura de dois retngulos e calcular seus permetros. (Permetro = 2 (altura + largura)) 2. Implemente uma classe paralelepipedo que possui trs atributos: altura, largura e comprimento e cinco mtodos: a) para solicitar as medidas do paralelepipedo; b) para calcular e retornar o volume (Vol = altura * largura * comprimento); c) para obter e mostrar o volume. Faa uma chamada ao mtodo anterior; d) para calcular e retornar a area (Area = 2 (alt * larg + alt * compr + larg * compr)); e) para obter e mostrar a area. Faa uma chamada ao mtodo anterior. O programa deve solicitar as medidas de dois paralelepipedos, calcular e mostrar suas areas e seus volumes. 3. Implemente uma classe para conter trs atributos do tipo real chamados hor, min e seg e chame-a de tempo. i. Crie um mtodo para solicitar a Hora (hor : min : seg) para o usurio; ii. Crie um mtodo para mostrar a Hora no formato hh : mm : ss; iii. Crie um mtodo para retornar uma determinada Hora em segundos; iv. Crie um mtodo para subtrair duas horas (fornecidas pelo usurio) e retornar o nmero de segundos entre elas. O mtodo recebe dois objetos da classe tempo passados como parmetros. O programa deve solicitar uma primeira Hora ao usurio, mostr-la no formato indicado acima, retornar seu valor em segundos. Depois deve solicitar uma segunda Hora ao usurio, mostr-la no formato indicado acima e seu valor em segundos. Finalmente, mostre a diferena entre as Horas em segundos. 4. Crie uma classe para descrever restaurantes. Os atributos devem armazenar o nome, o endereo, o preo mdio e o tipo de comida. i. Crie um mtodo para solicitar os dados para o usurio; ii. Crie um mtodo que receba como parmetro o nome do restaurante e mostre os seus dados; iii. Crie um mtodo para receber o tipo de comida como parmetro e mostre os dados do 1o. Restaurante que contm este tipo de comida; iv. Crie um mtodo que receba como parmetro o tipo de comida e mostre o nome de todos os restaurantes que o oferecem. O programa deve criar um vetor de 5 objetos restaurantes e solicitar: i. a entrada de dados dos 5 restaurantes; ii. o nome de um restaurante e informar seus dados; iii. o tipo de comida e listar os dados do 1o. Restaurante encontrado que oferece o tipo de comida informado; iv. o tipo de comida e listar o nome de todos os restaurantes que o oferecem. Obs.: rest : array [ 1..10 ] of restaurante; rest[1].nome

9

APOSTILA DE ORIENTAO A OBJETOS__________________________________________________________________ Profa. Gilene Borges Gomes ___

3. Tipos de associao entre classesUma associao um relacionamento indicando uma conexo semntica6 entre duas classes. Uma ligao uma instncia de uma associao. As associaes so bidirecionais e podem ser binrias, ternrias ou de ordem mais elevada; na prtica, geralmente so binrias. Uma associao pode ser: binria, ternria, herana e agregao.3.1. Simples - Binria

A associao binria ocorre entre duas classes. A notao para uma associao binria entre classes uma linha que as interligam e as respectivas quantidades. Exemplo: Pessoa 1.. * * Imvel

Ou seja, uma ou mais pessoas possuem zero ou mais imveis; um imvel pertence a uma ou mais pessoas. As possibilidades de associao binria so: Exatamente um Opcional (zero ou um) Especificado 1 0.. 1 2.. 4 Muitos (zero ou mais) Um ou mais Especificado * 1.. * 1.. 3, 5, 7.. 9

Uma associao pode possuir um atributo, chamado atributo de ligao, que no pode ser nem atributo de uma classe nem de outra isoladamente, sem perda de informao. A figura abaixo apresenta um exemplo onde o atributo de ligao permisso de acesso. Este atributo no pode ser colocado na classe Usurio, pois um usurio ter diferentes permisses para diferentes arquivos, e nem pode ser colocado na classe Arquivo, porque um arquivo ser acessado de maneira diferente por vrios usurios. Exemplo: Arquivo 1.. * acesso 1.. * Usurio

Acesso permisso de acesso

6

Semntica relativo significao; significativo.

10

APOSTILA DE ORIENTAO A OBJETOS__________________________________________________________________ Profa. Gilene Borges Gomes ___

Ou seja, um ou mais usurios tm acesso a um ou mais arquivos, segundo a permisso de acesso definida para cada arquivo e usurio conjuntamente.

3.2. Simples Ternria

Associao ternria uma associao entre trs classes, atmica, e no pode ser subdividida em associaes binrias sem perder informao. A notao para associao ternria a interligao entre as classes atravs de um losango, especificando as respectivas quantidades. Exemplo: leciona Professor 1.. 2 1 Disciplina Ou seja, um ou dois professores lecionam uma disciplina a um ou mais alunos. 1.. * Aluno

3.3. Exerccios 01

1.

Defina: a) atributo de ligao; b) associao; c) ligao; Explique a diferena entre associao binria e associao ternria. D exemplos. Quais os tipos de associao entre classes?

2. 3.

3.4. Exerccios 02

1. Faa e d nome as associaes existentes entre as classes abaixo; determine alguns atributos e mtodos para as classes. a) Homem Filho Mulher

11

APOSTILA DE ORIENTAO A OBJETOS__________________________________________________________________ Profa. Gilene Borges Gomes ___

b) Empresa c) Livro d) Motorista e) Quadrado f) Pas g) Professor Departamento Disciplina Aluno Cidade Estado Tringulo Aresta Vrtice Carro Doc_carro Cart_motorista Cliente Autor Editora Funcionrio Habilidade

3.5. Exerccios 03

1. a)

Associe os atributos s classes e identifique os atributos de ligao: Classes: Aluno / Prova Atributos: nome_aluno / disciplina / professor / nota / matrcula Classes: Cliente / Conta Atributos: nome_cliente / no_conta / valor_dep / valor_saq / saldo Classes: Arquivo / Usurio Atributos: nome_usu / nome_arquivo / tipo_arq / permisso / tipo_usu

b)

c)

12

APOSTILA DE ORIENTAO A OBJETOS__________________________________________________________________ Profa. Gilene Borges Gomes ___

3.6. Herana

Herana ou generalizao e especializao um tipo de associao entre classes, onde todos os atributos e mtodos definidos na superclasse (a classe mais genericamente definida) so compartilhados pela classe mais especializada, a subclasse. Na subclasse possvel ser feita a definio de mais atributos e mtodos e, tambm, a redefinio dos mtodos que foram herdados pela superclasse. A notao utilizada para herana a interligao das classes envolvidas e um tringulo prximo a superclasse. Exemplo: Formato fechado Cor_preenchimento Espessura_linha

Elipse Raio

Polgono Quant_Lados

Ou seja, um Formato fechado pode ser uma Elipse ou um Polgono. Tanto a classe Polgono quanto a classe Elipse herdam os atributos da classe Formato fechado. A classe Elipse possui ainda o atributo raio e a classe Polgono possui o atributo Quant. Lados. Portanto, a classe Elipse possui os atributos cor_preenchimento, espessura_linha e raio; e a classe Polgono possui os atributos cor_preenchimento, espessura_linha e quant_lados. Existem muitos exemplos na natureza. No reino animal, os mamferos herdam a caracterstica de terem uma espinha dorsal por serem uma subclasse dos vertebrados. Acrescentam a essa caracterstica, vrias outras, como ter sangue quente, amamentar, etc. Os roedores herdam todas as caractersticas dos vertebrados e mamferos e acrescentam outras, e assim por diante. Roedores

Mamferos Vertebrados Sangue Espinha_dorsal Amamentar

Roer

Em programao, a herana ocorre quando uma classe obtm a implementao (atributos e mtodos) de outra classe para desenvolver uma especializao. A herana permite a formao de uma hierarquia de classes, onde cada nvel uma especializao do nvel anterior, que mais genrico. 13

APOSTILA DE ORIENTAO A OBJETOS__________________________________________________________________ Profa. Gilene Borges Gomes ___

comum desenvolver estruturas genricas para depois ir acrescentando detalhes em POO (Programao Orientada a Objetos). Isto simplifica o cdigo e permite uma organizao maior de um projeto. Tambm favorece a reutilizao de cdigo. Se necessrio implementar um boto cor-de-rosa e j tem-se uma classe que define as caractersticas de um boto cinza, pode-se fazer com que nossa implementao seja uma subclasse de BotoCinza, e depois estender suas caractersticas. Desta forma, concentra-se apenas no necessrio (a cor do boto) e evita-se ter que definir tudo a partir do zero. Pode-se ter herana simples onde a subclasse herda os atributos e mtodos de uma nica superclasse e a herana mltipla onde a subclasse, tambm chamada de classe de juno, herda os atributos e mtodos de duas ou mais superclasses. Exemplos: Mamfero Lobo Homem

Homem Herana simples

Lobisomem Herana mltipla

No primeiro exemplo, a subclasse Homem herda atributos e mtodos da superclasse Mamfero. No segundo exemplo, a subclasse Lobisomem herda atributos das superclasses Lobo e Homem.

3.7. Exerccios 04

1. 2. 3.

Diferencie uma superclasse de uma subclasse. Uma subclasse pode ser tambm uma superclasse? Por que? Qual a diferena entre herana simples e herana mltipla? D exemplo.

3.8. Exerccios 05

1. Identifique os atributos e mtodos das classes abaixo e as associaes de herana entre elas: Mamfero Carro Homem Memria de Computador Conta corrente 14

ROM

Avio

Menu Vertical

APOSTILA DE ORIENTAO A OBJETOS__________________________________________________________________ Profa. Gilene Borges Gomes ___

HD

Leo

Menu

nibus

Conta poupana

RAM

Transporte

Menu Horizontal

Caminho

Conta

CD-ROM

CD-WORM

3.9. Exerccios 06

1. Categorize os relacionamentos listados a seguir em associao binria, ternria ou herana. Ateno, podem existir associaes ternrias ou n-rias na lista, portanto no presuma que todo relacionamento envolvendo trs ou mais classes seja uma generalizao. Defenda suas respostas. a) Um pas possui uma capital b) Um filsofo mesa de jantar est usando uma faca c) Arquivos contm registros d) Uma pessoa utiliza uma linguagem de programao em um projeto e) Os mouses e os teclados so dispositivos de entrada f) Uma classe pode ter diversos atributos g) Uma pessoa joga por uma equipe em um determinado ano h) Uma estrada interliga duas cidades i) Um estudante acompanha um curso com um professor

15

APOSTILA DE ORIENTAO A OBJETOS__________________________________________________________________ Profa. Gilene Borges Gomes ___

4. Herana em Object Pascal

4.1. Herana simples

A classe deve ser definida normalmente com o acrscimo da superclasse (veiculo) na frente da palavra reservada object.type veiculo = object qt_rodas : integer; qt_combust : real; marca : string; function abastecer : real; end; caminhao = object (veiculo) limite_carga : real; end; { definio de uma classe veiculo }

{ definio de uma classe caminhao } { com herana da superclasse veiculo }

No exemplo acima temos a superclasse veiculo e a subclasse caminhao. Os mtodos da classe caminhao so os mesmos da classe veiculo com incluso do atributo limite_carga. No h incluso de novos mtodos nem redefinio do mtodo herdado (abastecer). O Object Pascal (at a verso 7.0) no suporta herana mltipla.

4.2. Exerccios 01

1.

Faa um programa para armazenar dados sobre veculos. a) Crie a classe Veiculo com os atributos: Peso em quilos, VelocMax em Km/h e Preco em R$. E com os mtodos: EntrVeic para entrada dos dados e MostrVeic para mostrar os dados. b) Crie a subclasse CarroPasseio usando a superclasse Veiculo como base. Inclua os atributos Cor (string) e Modelo (string). E os mtodos: EntrPass para entrada dos dados e MostrPass para mostrar os dados. c) Crie a subclasse Caminhao usando a superclasse Veiculo como base. Inclua os atributos Toneladas (carga mxima), AlturaMax (int) e Comprimento (int). E os mtodos: EntrCam para entrada dos dados e MostrCam para mostrar os dados.

O programa deve fornecer um menu com opes (como o apresentado a seguir) para serem escolhidas pelo usurio. O programa deve solicitar o nmero do veculo (1 3). Dependendo da opo selecionada, o programa executa o mtodo do objeto informado. Existiro no mximo trs objetos para cada classe.

16

APOSTILA DE ORIENTAO A OBJETOS__________________________________________________________________ Profa. Gilene Borges Gomes ___

MENU 1. 2. 3. 4. 5. 6. 7. Entrada de dados para Veculos Entrada de dados para Carros de Passeio Entrada de dados para Caminhes Sada de dados de Veculos Sada de dados de Carros de Passeio Sada de dados de Caminhes Sair do programa ] ]

Digite a opo desejada (1 7)........: [ Digite o nmero do veculo (1 3)..: [ 2. Dadas as classes:

a) Conta: armazenar os atributos num_conta, nome_cli, saldo; Atualizar: mtodo para receber como argumento: a conta, o valor e o depsito / saque; atualizar o saldo e mostr-lo; b) Conta_corrente (herana de Conta): armazenar o atributo limite; Entrada: mtodo para entrada dos dados; Situao: mtodo para informar se est: Positiva (saldo >= 0); Dentro do limite (saldo < 0 e saldo >= 0 limite), ou Negativa ( saldo < 0 limite); Sada: mtodo para mostrar os dados; c) Conta_poupana (herana de Conta): armazenar o atributo taxa; Entrada: mtodo para entrada dos dados; Situao: mtodo para informar a situao da poupana: Taxa * saldo; Sada: mtodo para mostrar os dados; Faa um programa que crie as classes acima e: a) solicite a entrada dos dados de duas contas corrente; b) solicite a entrada dos dados de duas contas poupana; c) solicite o nmero da conta, o valor e o tipo de processamento (saque ou depsito): realizar esta operao para cada conta enquanto o usurio quiser (crie uma condio de parada); d) mostre a sada dos dados das duas contas corrente e suas respectivas situaes; e) mostre a sada dos dados das duas contas poupana e suas respectivas situaes.

17

APOSTILA DE ORIENTAO A OBJETOS__________________________________________________________________ Profa. Gilene Borges Gomes ___

5. Princpios bsicos da orientao a objetosOs autores divergem quanto s caractersticas que fazem uma linguagem ser orientada a objetos, mas a maioria concorda que o paradigma se baseia em quatro princpios bsicos: abstrao, encapsulamento, herana e polimorfismo, explicados a seguir.5.1. Abstrao

Abstrao o exame seletivo de determinados aspectos de um problema. O objetivo da abstrao isolar os aspectos que sejam importantes para algum propsito e suprimir os que no o forem. A abstrao deve sempre visar a um propsito, porque este determina o que e o que no importante. Abstrao o processo de extrair as caractersticas essenciais de um objeto real. A abstrao necessria para se ter um modelo fiel da realidade sobre o qual se possa operar. O conjunto de caractersticas resultante da abstrao forma um tipo de dados abstrato com informaes sobre seu estado e comportamento. A abstrao nem sempre produz os mesmos resultados, depende do contexto onde utilizada, ou seja, a abstrao de um objeto por uma pessoa pode ser diferente na viso de outra. Por exemplo, para um mecnico, um carro caracterizado pela marca, modelo, potncia, cilindradas, etc. J um usurio comum pode caracteriz-lo pela cor, marca, modelo, consumo e preo. E finalmente, para o Departamento de Trnsito, um carro pode ser totalmente caracterizado pela placa, proprietrio, marca, modelo, cor e nmero de chassi. Veja a ilustrao abaixo. do mecnico CARRO* Marca Modelo Potncia Cilindradas Ponto de vista do usurio CARRO** Marca Modelo Cor Consumo Preo Placa do Dep. trnsito CARRO*** Marca Modelo Cor No. chassi Proprietrio Placa

Vamos supor que voc vai escrever um aplicativo para uma transportadora que trabalha exclusivamente para uma livraria e cobra por livro, apesar do custo ser baseado no peso. possvel ter uma boa noo do peso de um livro sabendo o nmero de pginas, o formato e o tipo de capa (dura ou mole). Portanto, voc poder criar um objeto Livro que tenha essas trs caractersticas. J se voc tambm for escrever um aplicativo semelhante para a livraria, no poder aproveitar o mesmo objeto Livro que voc criou, pois a abstrao diferente. Para a livraria, interessam caractersticas como autor, ttulo, assunto, editora, preo, etc. que no interessam transportadora.

18

APOSTILA DE ORIENTAO A OBJETOS__________________________________________________________________ Profa. Gilene Borges Gomes ___

5.2. Encapsulamento

O encapsulamento justamente o empacotamento dos atributos e dos mtodos numa mesma classe. Isto protege os dados contra corrupo, pois somente os mtodos da classe podero alterar as estruturas de dados desta classe em questo, ilustrado pela figura abaixo. Mtodos Atributos Objeto Por exemplo, existe um nmero determinado de coisas que se pode fazer com um toca-fitas. Pode-se avanar, voltar, gravar, tocar, parar, interromper e ejetar a fita. Dentro do toca-fitas, porm, h vrias outras funes sendo realizadas como: acionar o motor, deslig-lo, acionar o cabeote de gravao, liberar o cabeote, e outras operaes mais complexas. Essas funes so escondidas dentro do mecanismo do toca-fitas e no possvel acess-las diretamente. Quando o boto play apertado, o motor ligado e o cabeote de reproduo acionado, mas no necessrio saber como isso feito para usar o toca-fitas. Uma das principais vantagens do encapsulamento esconder a complexidade do cdigo. Outra, proteger os dados. Permitindo o acesso a eles apenas atravs de mtodos evita que seus dados sejam corrompidos por aplicaes externas. No exemplo do toca-fitas, quando utilizado o mtodo gravar, sabe-se que o aparelho ir gravar informaes na fita em um formato padro que poder ser lido por outros aparelhos similares. Se no existisse o mtodo gravar e fosse necessrio acessar direto fita, cada pessoa poderia estabelecer uma maneira diferente de gravar informaes (usando laser, ms, etc.). Gravar uma fita passaria a ser uma tarefa complicada, pois o usurio teria que conhecer toda a complexidade do aparelho. Depois, se perderia a compatibilidade pois no haveria uma forma de proteger os dados para que fossem sempre gravados em um formato padro. O encapsulamento, ento, funciona tanto para proteger os dados, como para simplificar o uso de um objeto. H vrios exemplos na programao. Os aplicativos conhecidos que rodam no Windows tem uma grande semelhana porque usam os mesmos objetos. Cada objeto tem um nmero limitado de funes (mtodos) que podem ser invocados sobre ele. Se voc decide usar, em alguma parte do seu programa, dois botes: OK e Cancela, voc no precisa entender como ele foi escrito, nem saber quais as suas variveis internas. Basta saber como constru-lo, mudar o texto que contm e depois inclu-lo em seu programa. No h como corromper a estrutura interna do boto.5.3. Herana

o aproveitamento e extenso das caractersticas de uma classe existente. Mais detalhes veja item 3. Tipos de associao entre classes.

19

APOSTILA DE ORIENTAO A OBJETOS__________________________________________________________________ Profa. Gilene Borges Gomes ___

5.4. Polimorfismo

Polimorfismo a capacidade de um objeto enviar uma mensagem genrica para muitos outros objetos. Cada objeto alvo implementa o mtodo, que atende a mensagem genrica, de diferentes maneiras. a propriedade de se utilizar um mesmo nome para fazer coisas diferentes. Por exemplo, mandar algum correr pode produzir resultados diferentes dependendo da situao. Se a pessoa estiver parada e em p, ir obedecer ordem simplesmente correndo. Se a pessoa estiver no volante de um carro, o resultado ser o aumento da presso do p no acelerador. Em programao, uma mesma mensagem poder provocar um resultado diferente, dependendo dos argumentos que foram passados e do objeto que o receber. Por exemplo: o envio de uma instruo desenhe para uma subclasse de polgono, poder desenhar um tringulo, retngulo, pentgono, etc. dependendo da classe que receber a instruo.

5.5. Exerccios 01

1. 2. 3. 4.

Quais so os princpios bsicos da orientao a objetos. Defina-os. Quais as vantagens do encapsulamento? Crie um exemplo de polimorfismo. Qual o objetivo da abstrao?

5. Crie duas abstraes sobre o objeto Livro: uma para uma biblioteca e outra para uma livraria.

20

APOSTILA DE ORIENTAO A OBJETOS__________________________________________________________________ Profa. Gilene Borges Gomes ___

6. Polimorfismo em Object Pascal6.1. Polimorfismo

A classe deve ser definida normalmente com o acrscimo da superclasse (retangulo) na frente da palavra reservada object.type retangulo = object altura : real; largura : real; function area : real; end; paralelepipedo = object (retangulo) comprimento : real; function area : real; end; { definio de uma classe retangulo }

{ definio de uma classe paralelepipedo } { com herana da superclasse retangulo } { e redefinio do mtodo area }

Observe a definio do mtodo area da classe retangulo:Function retangulo.area : real; begin area := altura * largura; end;

Observe agora que o mtodo area ser redefinido na subclasse, pois a implementao deste mtodo diferente para esta classe, que segue abaixo:Function paralelepipedo.area : real; begin area := 2 * (altura * largura + altura * comprimento + largura * comprimento); end;

Note que os atributos altura e largura vieram por herana.

6.2. Exerccios 01

1. Fazer um programa que defina as classes abaixo e implemente seus mtodos: entrada de dados e clculo do permetro (o qual deve calcular e mostrar o permetro = soma dos lados do polgono).P o lg o n o la d o 1 la d o 2 la d o 3 e n tra d a c a lc _ p e r m e tr o Q u a d r il t e r o la d o 4

e n tr a d a c a lc _ p e r m e tr o

21

APOSTILA DE ORIENTAO A OBJETOS__________________________________________________________________ Profa. Gilene Borges Gomes ___

7. Agregao

7.1. Definio

Outro tipo de associao a agregao ou todo-parte, onde uma classe representa o todo e uma ou mais classes representam as partes deste todo. Um agregado (o todo) possui partes, que, por sua vez, podem ter partes. A notao da agregao representada pela interligao das classes e um smbolo de losango prximo a classe que ilustra o todo. Exemplo: Acervo 1.. * Livro 1.. * Pgina

Ou seja, um acervo possui um ou mais livro. Um livro tm uma ou mais pginas.

7.2. Exerccios 01

1. 2. 3.

O que agregao? D um exemplo. Explique a diferena entre herana e agregao. D exemplos. Identifique os atributos e mtodos das classes abaixo e faa a associao entre elas: Reta Vdeo Computador

Perifrico de Entrada Roda

Processador

Perifrico de Sada Ponto

Polgono

Carro

Motor

Teclado

Memria

Perifricos

Porta

Mouse

RAM

Transporte

ROM

22

APOSTILA DE ORIENTAO A OBJETOS__________________________________________________________________ Profa. Gilene Borges Gomes ___

8. Dinmica dos objetosOs conceitos bsicos da dinmica dos objetos so: estado, evento, ao, transio e condio, descritos a seguir:

8.1. Estado

O estado a situao atual de um objeto definido pelos valores dos atributos deste objeto. Na figura abaixo, os estados do objeto Obra so: disponvel, emprestado e extraviado. O objeto pode assumir todos os estados durante sua existncia e somente um de cada vez.

8.2. Evento

Eventos so estmulos internos que acontecem entre objetos, ou externos que so aqueles que vm de fora do sistema, estimulando o sistema a produzir alguma resposta ou mudana de estado. Na figura abaixo, um evento externo solicita emprstimo ou devolver obra e um estmulo interno cria_ficha ou destri_ficha.

8.3. Ao e Transio

A reao de um objeto a um evento pode constituir-se de uma ao ou transio. A ao uma operao instantnea associada a um evento. Um exemplo de ao seria cota = cota + 1, quando ocorre a transio de disponvel para o de emprestado. Transio a modificao de estado causada pelo evento que depende do estado corrente e do evento. Na figura abaixo, o evento solicia_emprstimo causa uma transio, uma modificao do estado de disponvel para o de emprestado. importante lembrar que um evento pode gerar mais de uma transio, porque a transio depende do estado atual do objeto.

8.4. Condio

Uma condio uma funo booleana de valores de objetos vlida dentro de um intervalo de tempo. Somente se a condio for verdadeira, que a transio poder ser executada. Um exemplo de condio usurio_apto e tombo disponvel, ilustrado na figura abaixo. Neste caso, as duas condies devem ser satisfeitas. Se uma condio for usada como guarda nas transies, possibilita que as transies guardadas disparem quando seu evento ocorrer, mas somente se a condio de guarda for verdadeira. Observando a figura abaixo, a transio do estado disponvel para emprestado uma transio guardada, pois as condies devem ser verdadeiras para que a transio ocorra.

23

APOSTILA DE ORIENTAO A OBJETOS__________________________________________________________________ Profa. Gilene Borges Gomes ___

c r ia _ f ic h a

s o lic ita e m p r s t im o [ u s u r io _ a p t o e t o m b o _ d is p o n v e l ]

D is p o n v e l

d e v o lv e r o b r a

E m p re s ta d o

usu_perde

fu n c _ p e r d e fu n c _ e n c o n tra usu_encontra

restaurar restaurao concluda

R e s ta u ra o

fu n c _ e n c o n tra fu n c _ p e rd e

E x t r a v ia d o

d e s tr i_ f ic h a

8.5. Exerccios 01

1.

Defina: a) estado; b) evento; c) ao; d) transio; e) condio. Identifique os estados, eventos, aes, transies e condies das seguintes classes: a) computador b) obra c) conta bancria d) janela (Windows) e) dispositivo de alarme residencial f) linha telefnica g) avio

2.

24

APOSTILA DE ORIENTAO A OBJETOS__________________________________________________________________ Profa. Gilene Borges Gomes ___

9. Bibliografia

BORGES, Gilene do E. S., NASCIMENTO, Maria Elenita M. Uma avaliao de Mtodos Orientados a Objetos e Modelos de Processo. Braslia: UnB, 1997. BORGES, Gilene do E. S., NASCIMENTO, Maria Elenita M. SGMOO: Sistema Gestor de Mtodos Orientados a Objetos baseado em Conhecimento. Braslia: UnB, 1998. OLIVEIRA, Adelize G. e CRISTOVO, Leandro. Object Pascal para Delphi. Florianpolis: Visual Books, 1999. RUMBAUGH, James et. al. Modelagem e Projetos Baseados em Objetos. Rio de Janeiro: Campus, 1994.

25