Você está na página 1de 21

Conceitos de Programao

Orientada a Objetos OOP


(Object-Oriented Programing)
Fevereiro - 2007

Programao Orientada Objetos Reviso: 23/02/2007 - Pgina 1

ndice
1. Histria ............................................................................................................................................ 4
2. Introduo a Programao com Objetos ........................................................................................ 4
3. Coneceitos Bsicos ......................................................................................................................... 5

Abstrao ............................................................................................................................ 5
Encapsulao ...................................................................................................................... 5
Compartilhamento .............................................................................................................. 6
4. Modelo de Objetos e Definio de Classe ...................................................................................... 7

Objetos e Classes ................................................................................................................ 7


Ligaes e Associaes .................................................................................................... 10
Agregao......................................................................................................................... 11
5. Herana ......................................................................................................................................... 12
6. Interface......................................................................................................................................... 14
7. Classe Abstrata ............................................................................................................................. 15
8. Escopo de classe, varivel e mtodo............................................................................................ 16
9. Orientao a Objetos no ADVPL................................................................................................... 17

Definio .......................................................................................................................... 17
Dicas teis ........................................................................................................................ 17
Modelagem das classes de Exemplo ................................................................................ 18
Criao de uma classe....................................................................................................... 19
Herana com ADVPL....................................................................................................... 20
Exemplo da criao de um objeto .................................................................................... 20
10. Sugestes de Desenvolvimento.................................................................................................. 21
11. Referncia Bibliogrfica: ............................................................................................................. 21

Programao Orientada Objetos Reviso: 23/02/2007 - Pgina 2

Histrico de Alteraes
Nome
Marcelo Dolis Malatesta
Michel Willian Mosca

Data
23/02/2007
23/02/2007

Observaes
Criao
Criao

Programao Orientada Objetos Reviso: 23/02/2007 - Pgina 3

1. Histria
Nos anos 60 lanado a Simula-67 que apresentou pela primeira vez os conceitos de classes,
rotinas correlatas e subclasses. Na dcada de 70 a Seros-PARC cria a Smalltak at hoje
considerada a mais pura das LPOO. No final da dcada de 80 aparece a C++, uma linguagem
hbrida.
Orientao a Objetos o maior avano em software destes ltimos anos. uma forma mais
natural de se analisar o mundo. Ela nos permite construir sistemas melhores e, alm disso, de
maneira mais fcil. Ser a mais importante das tecnologias emergentes na rea de software nos
anos 90.
As tcnicas estruturadas que, sem dvida, atualmente so as mais populares na comunidade de
informtica, obtiveram grande aceitao desde que foram lanadas no final dos anos 70. Contudo
a medida que foram sendo utilizadas, a decomposio funcional mostrou-se inadequada em
situaes de sistemas complexos e principalmente para profissionais iniciantes. Os
aperfeioamentos introduzidos em 1984, por Sthephen M e John F Palmer e, mais tarde,
complementados por Stephen Mellor e Paul Ward, para sistemas em real-time, ajudaram a anlise
estruturada a se tornar mais eficiente. Contudo os sistemas criados com as tcnicas estruturadas
ainda so difceis de serem incrementados com novas funes e as alteraes em funes j
existentes, muitas vezes, provocam srios problemas em outras partes do software.
2. Introduo a Programao com Objetos
Um objeto uma entidade do mundo real que tem uma identidade. Objetos podem representar
entidades concretas (um arquivo no meu computador, uma bicicleta) ou entidades conceituais
(uma estratgia de jogo, uma poltica de escalonamento em um sistema operacional). Cada objeto
ter sua identidade significa que dois objetos so distintos mesmo que eles apresentem exatamente
as mesmas caratersticas.
Embora objetos tenham existncia prpria no mundo real, em termos de linguagem de
programao um objeto necessita um mecanismo de identificao. Esta identificao de objeto
deve ser nica, uniforme e independente do contedo do objeto. Este um dos mecanismos que
permite a criao de colees de objetos, as quais so tambm objetos em si.
A estrutura de um objeto representada em termos de atributos. O comportamento de um objeto
representado pelo conjunto de operaes que podem ser executadas sobre o objeto. Objetos com
a mesma estrutura e o mesmo comportamento so agrupados em classes. Uma classe uma
abstrao que descreve propriedades importantes para uma aplicao e simplesmente ignora o
resto.
Cada classe descreve um conjunto (possivelmente infinito) de objetos individuais. Cada objeto
dito ser uma instncia de uma classe. Assim, cada instncia de uma classe tem seus prprios
valores para cada atributo, mas dividem os nomes dos atributos e mtodos com as outras
instncias da classe. Implicitamente, cada objeto contm uma referncia para sua prpria classe -em outras palavras, ele sabe o que ele .
Polimorfismo significa que a mesma operao pode se comportar de forma diferente em classes
diferentes. Por exemplo, a operao move quando aplicada a uma janela de um sistema de
interfaces tem um comportamento distinto do que quando aplicada a uma pea de um jogo de
xadrez. Um mtodo uma implementao especfica de uma operao para uma certa classe.

Programao Orientada Objetos Reviso: 23/02/2007 - Pgina 4

Polimorfismo tambm implica que uma operao de uma mesma classe pode ser implementada
por mais de um mtodo. O usurio no precisa saber quantas implementaes existem para uma
operao, ou explicitar qual mtodo deve ser utilizado: a linguagem de programao deve ser
capaz de selecionar o mtodo correto a partir do nome da operao, classe do objeto e
argumentos para a operao. Desta forma, novas classes podem ser adicionadas sem
necessidade de modificao de cdigo j existente, pois cada classe apenas define os seus
mtodos e atributos.
No mundo real, alguns objetos e classes podem ser descritos como casos especiais, ou
especializaes, de outros objetos e classes. Por exemplo, a classe de computadores pessoais
com processador da linha 80x86 uma especializao de computadores pessoais, que por sua
vez uma especializao de computadores. No desejvel que tudo que j foi descrito para
computadores tenha de ser repetido para computadores pessoais ou para computadores pessoais
com processador da linha 80x86.
Herana o mecanismo do paradigma de orientao a objetos que permite compartilhar atributos
e operaes entre classes baseada em um relacionamento hierrquico. Uma classe pode ser
definida de forma genrica e depois refinada sucessivamente em termos de subclasses ou classes
derivadas. Cada subclasse incorpora, or herda, todas as propriedades de sua superclasse (ou
classe base) e adiciona suas propriedades nicas e particulares. As propriedades da classe base
no precisam ser repetidas em cada classe derivada. Esta capacidade de fatorar as propriedades
comuns de diversas classes em uma superclasse pode reduzir dramaticamente a repetio de
cdigo em um projeto ou programa, sendo uma das principais vantagens da abordagem de
orientao a objetos.
3. Coneceitos Bsicos
A abordagem de orientao a objetos favorece a aplicao de diversos conceitos considerados
fundamentais para o desenvolvimento de bons programas, tais como abstrao e encapsulao.
Tais conceitos no so exclusivos desta abordagem, mas so suportados de forma melhor no
desenvolvimento orientado a objetos do que em outras metodologias.
Abstrao
Abstrao consiste de focalizar nos aspectos essenciais inerentes a uma entidade e ignorar
propriedades ``acidentais.'' Em termos de desenvolvimento de sistemas, isto significa concentrarse no que um objeto e faz antes de se decidir como ele ser implementado. O uso de abstrao
preserva a liberdade para tomar decises de desenvolvimento ou de implementao apenas
quando h um melhor entendimento do problema a ser resolvido.
Muitas linguagens de programao modernas suportam o conceito de abstrao de dados; porm,
o uso de abstrao juntamente com polimorfismo e herana, como suportado em orientao a
objetos, um mecanismo muito mais poderoso.
O uso apropriado de abstrao permite que um mesmo modelo conceitual (orientao a objetos)
seja utilizado para todas as fases de desenvolvimento de um sistema, desde sua anlise at sua
documentao.
Encapsulao
Encapsulao, tambm referido como esconder informao, consiste em separar os aspectos
externos de um objeto, os quais so acessveis a outros objetos, dos detalhes internos de
implementao do objeto, os quais permanecem escondidos dos outros objetos. O uso de

Programao Orientada Objetos Reviso: 23/02/2007 - Pgina 5

encapsulao evita que um programa torne-se to interdependente que uma pequena mudana
tenha grandes efeitos colaterais.
O uso de encapsulao permite que a implementao de um objeto possa ser modificada sem
afetar as aplicaes que usam este objeto. Motivos para modificar a implementao de um objeto
podem ser por exemplo melhoria de desempenho, correo de erros e mudana de plataforma de
execuo.
Assim como abstrao, o conceito de encapsulao no exclusivo da abordagem de orientao a
objetos. Entretanto, a habilidade de se combinar estrutura de dados e comportamento em uma
nica entidade torna a encapsulao mais elegante e mais poderosa do que em linguagens
convencionais que separam estruturas de dados e comportamento.
Compartilhamento
Tcnicas de orientao a objetos promovem compartilhamento em diversos nveis distintos.
Herana de estrutura de dados e comportamento permite que estruturas comuns sejam
compartilhadas entre diversas classes derivadas similares sem redundncia. O compartilhamento
de cdigo usando herana uma das grandes vantagens da orientao a objetos. Ainda mais
importante que a economia de cdigo a clareza conceitual de reconhecer que operaes
diferentes so na verdade a mesma coisa, o que reduz o nmero de casos distintos que devem ser
entendidos e analisados.
O desenvolvimento orientado a objetos no apenas permite que a informao dentro de um projeto
seja compartilhada como tambm oferece a possibilidade de reaproveitar projetos e cdigo em
projetos futuros. As ferramentas para alcanar este compartilhamento, tais como abstrao,
encapsulao e herana, esto presentes na metodologia; uma estratgia de reuso entre projetos
a definio de bibliotecas de elementos reusveis. Entretanto, orientao a objetos no uma
frmula mgica para alcanar reusabilidade; para tanto, preciso planejamento e disciplina para
pensar em termos genricos, no voltados simplesmente para a aplicao corrente.

Programao Orientada Objetos Reviso: 23/02/2007 - Pgina 6

4. Modelo de Objetos e Definio de Classe


Um modelo de objetos busca capturar a estrutura esttica de um sistema mostrando os objetos
existentes, seus relacionamentos, e atributos e operaes que caracterizam cada classe de
objetos. atravs do uso deste modelo que se enfatiza o desenvolvimento em termos de objetos
ao invs de mecanismos tradicionais de desenvolvimento baseado em funcionalidades, permitindo
uma representao mais prxima do mundo real.
Uma vez que as principais definies e conceitos da abordagem de orientao a objetos esto
definidos, possvel introduzir o modelo de objetos que ser adotado ao longo deste texto. O
modelo apresentado um subconjunto do modelo OMT (Object Modeling Technique), proposto por
1.1
Rumbaugh e outros . OMT tambm introduz uma representao diagramtica para este modelo,
a qual ser tambm apresentada aqui.
Objetos e Classes
Objeto definido neste modelo como um conceito, abstrao ou coisa com limites e significados
bem definidos para a aplicao em questo. Objetos tm dois propsitos: promover o
entendimento do mundo real e suportar uma base prtica para uma implementao computacional.
No existe uma maneira ``correta'' de decompor um problema em objetos; esta decomposio
depende do julgamento do projetista e da natureza do problema. Todos objetos tm identidade
prpria e so distinguveis.
Uma classe de objetos descreve um grupo de objetos com propriedades (atributos) similares,
comportamento (operaes) similares, relacionamentos comuns com outros objetos e uma
semntica comum. Por exemplo, Pessoa e Companhia so classes de objetos. Cada pessoa tem
um nome e uma idade; estes seriam os atributos comuns da classe. Companhias tambm podem
ter os mesmos atributos nome e idade definidos. Entretanto, devido distino semntica elas
provavelmente estariam agrupados em outra classe que no Pessoa. Como se pode observar, o
agrupamento em classes no leva em conta apenas o compartilhamento de propriedades.
Todo objeto sabe a que classe ele pertence, ou seja, a classe de um objeto um atributo implcito
do objeto. Este conceito suportado na maior parte das linguagens de programao orientada a
objetos, tais como C ++.
OMT define dois tipos de diagramas de objetos, diagramas de classes e diagramas de instncias.
Um diagrama de classe um esquema, ou seja, um padro ou gabarito que descreve as muitas
possveis instncias de dados. Um diagrama de instncias descreve como um conjunto particular
de objetos est relacionado. Diagramas de instncias so teis para apresentar exemplos e
documentar casos de testes; diagramas de classes tm uso mais amplo. A Figura apresenta a
notao adotada para estes diagramas.

Figura: Representao diagramtica de OMT para classes e objetos. Um diagrama de classe


apresentado esquerda. Um possvel diagrama de instncias apresentado direita.

Programao Orientada Objetos Reviso: 23/02/2007 - Pgina 7

Atributos
Um atributo um valor de dado assumido pelos objetos de uma classe. Nome, idade e peso so
exemplos de atributos de objetos Pessoa. Cor, peso e modelo so possveis atributos de objetos
Carro. Cada atributo tem um valor para cada instncia de objeto. Por exemplo, o atributo idade tem
valor ``29'' no objeto Pedro Y. Em outras palavras, Pedro Y tem 29 anos de idade. Diferentes
instncias de objetos podem ter o mesmo valor para um dado atributo.
Cada nome de atributo nico para uma dada classe, mas no necessariamente nico entre todas
as classes. Por exemplo, ambos Pessoa e Companhia podem ter um atributo chamado endereo.
No diagrama de classes, atributos so listados no segundo segmento da caixa que representa a
classe. O nome do atributo pode ser seguido por detalhes opcionais, tais como o tipo de dado
assumido e valor default. A Figura
mostra esta representao.

Figura: Representao diagramtica de OMT para classes e objetos com atributos. Um diagrama
de classe com atributos apresentado esquerda. Um possvel diagrama de instncias com os
respectivos valores apresentado direita.
No se deve confundir identificadores internos de objetos com atributos do mundo real.
Identificadores de objetos so uma convenincia de implementao, e no tm nenhum significado
para o domnio da aplicao. Por exemplo, CIC e RG no so identificadores de objetos, mas sim
verdadeiros atributos do mundo real.
Operaes e Mtodos
Uma operao uma funo ou transformao que pode ser aplicada a ou por objetos em uma
classe. Por exemplo, abrir, salvar e imprimir so operaes que podem ser aplicadas a objetos da
classe Arquivo. Todos objetos em uma classe compartilham as mesmas operaes.
Toda operao tem um objeto-alvo como um argumento implcito. O comportamento de uma
operao depende da classe de seu alvo. Como um objeto ``sabe'' qual sua classe, possvel
escolher a implementao correta da operao. Alm disto, outros argumentos (parmetros)
podem ser necessrios para uma operao.
Uma mesma operao pode se aplicar a diversas classes diferentes. Uma operao como esta
dita ser polimrfica, ou seja, ela pode assumir distintas formas em classes diferentes.

Programao Orientada Objetos Reviso: 23/02/2007 - Pgina 8

Um mtodo a implementao de uma operao para uma classe. Por exemplo, a operao
imprimir pode ser implementada de forma distinta, dependendo se o arquivo a ser impresso contm
apenas texto ASCII, um arquivo de um processador de texto ou binrio. Todos estes mtodos
executam a mesma operao -- imprimir o arquivo; porm, cada mtodo ser implementado por
um diferente cdigo.
A assinatura de um mtodo dada pelo nmero e tipos de argumentos do mtodo, assim como
por seu valor de retorno. Uma estratgia de desenvolvimento recomendvel manter assinaturas
coerentes para mtodos implementando uma dada operao, assim como um comportamento
consistente entre as implementaes.
Em termos de diagramas OMT, operaes so listadas na terceira parte da caixa de uma classe.
Cada nome de operao pode ser seguida por detalhes opcionais, tais como lista de argumentos e
tipo de retorno. A lista de argumentos apresentada entre parnteses aps o nome da operao.
Uma lista de argumentos vazia indica que a operao no tem argumentos; da ausncia da lista de
argumentos no se pode concluir nada. O tipo de resultado vem aps a lista de argumentos, sendo
precedido por dois pontos (:). Caso a operao retorne resultado, este no deve ser omitido -- esta
a forma de distingu-la de operaes que no retornam resultado. Exemplos de representao de
operaes em OMT so apresentados na Figura .

Programao Orientada Objetos Reviso: 23/02/2007 - Pgina 9

Ligaes e Associaes
Ligaes e associaes so os mecanismos para estabelecer relacionamentos entre objetos e
classes. Uma ligao uma conexo fsica ou conceitual entre duas instncias de objetos. Por
exemplo, Pedro Y trabalha-para Companhia W. Uma ligao uma instncia de uma associao.
Uma associao descreve um grupo de ligaes com estrutura e semntica comuns, tal como
``uma pessoa trabalha-para uma companhia.'' Uma associao descreve um conjunto de ligaes
potenciais da mesma forma que uma classe descreve um conjunto de objetos potenciais.
A notao de diagramas OMT para associao uma linha conectando duas classes. Uma ligao
representada como uma linha conectando objetos. Nomes de associaes so usualmente
apresentada em itlico. Se entre um par de classes s existe uma nica associao cujo sentido
deva ser bvio, ento o nome da associao pode ser omitido. A Figura
apresenta um exemplo
de diagrama OMT com associaes.

Figura: Representao diagramtica de OMT para associaes entre classes (topo) e ligaes
entre objetos (abaixo).
Alguns atributos podem dizer respeito a associaes, e no a classes. Para tais casos, OMT
introduz o conceito de atributo de ligao. Quando a associao tem ainda operaes associadas,
ento ela pode ser modelada como uma classe que est ``conectada'' associao. Um exemplo
deste caso apresentado na Figura .

Programao Orientada Objetos Reviso: 23/02/2007 - Pgina 10

Figura: Representao diagramtica de OMT para associaes entre classes com atributos. Neste
caso, os atributos da associao esto representados atravs de uma classe explcita,
Autorizao. O crculo preto no final da linha da associao indica que mais de um objeto de uma
classe podem estar associados a cada objeto da outra classe. Um crculo vazado indicaria que
possivelmente nenhum objeto poderia estar associado, ou seja, o conceito de associao opcional.
Agregao
Uma agregao um relacionamento do tipo ``uma-parte-de,'' nos quais objetos representando os
componentes de alguma coisa so associados com objetos representando uma montagem. Por
exemplo, o texto de um documento pode ser visto como um conjunto de pargrafos, e cada
pargrafo um conjunto de sentenas (Figura ).

Figura: Representao diagramtica de OMT para agregao.


Agregao uma forma de associao com alguma semntica adicional. Por exemplo, agregao
transitiva: se A parte de B e B parte de C, ento A parte de C. Agregao tambm antisimtrica: se A parte de B, ento B no parte de A.

Programao Orientada Objetos Reviso: 23/02/2007 - Pgina 11

5. Herana
Generalizao e herana so abstraes poderosas para compartilhar similaridades entre classes
e ao mesmo tempo preservar suas diferenas.
Generalizao o relacionamento entre uma classe e um ou mais verses refinadas
(especializadas) desta classe. A classe sendo refinada chamada de superclasse ou classe base,
enquanto que a verso refinada da classe chamada uma subclasse ou classe derivada. Atributos
e operaes comuns a um grupo de classes derivadas so colocadas como atributos e operaes
da classe base, sendo compartilhados por cada classe derivada. Diz-se que cada classe derivada
herda as caractersticas de sua classe base. Algumas vezes, generalizao chamada de
relacionamento is-a (-um), porque cada instncia de uma classe derivada tambm uma
instncia da classe base.
Generalizao e herana so transitivas, isto , podem ser recursivamente aplicadas a um nmero
arbitrrio de nveis. Cada classe derivada no apenas herda todas as caractersticas de todos seus
ancestrais como tambm pode acrescentar seus atributos e operaes especficos.
A Figura
mostra a notao diagramtica de OMT para representar generalizao, um tringulo
com o vrtice apontado para a classe base. Um discriminador pode estar associado a cada
associao do tipo generalizao; este um atributo do tipo enumerao que indica qual a
propriedade de um objeto est sendo abstrada pelo relacionamento de generalizao. Este
discriminador simplesmente um nome para a base de generalizao.

Figura: Representao diagramtica de OMT para generalizao.

Programao Orientada Objetos Reviso: 23/02/2007 - Pgina 12

1.2

Uma classe derivada pode sobrepor uma caracterstica de sua classe base definindo uma
caracterstica prpria com o mesmo nome. A caracterstica local (da classe derivada) ir refinar e
substituir a caracterstica da classe base. Uma caracterstica pode ser sobreposta, por exemplo,
por questes de refinamento de especificao ou por questes de desempenho.
Entre as caractersticas que podem ser sobrepostas esto valores default de atributos e mtodos
de operao. Uma boa estratgia de desenvolvimento no deve sobrepor uma caracterstica de
forma inconsistente com a semntica da classe base.

Programao Orientada Objetos Reviso: 23/02/2007 - Pgina 13

6. Interface
um tipo definido da qual no se deseja que sejam criadas instncias da mesma, mas apenas
deve ser seguida como padro para a criao de novas classes como um contrato.
Na interface so apenas definidas as assinaturas de operaes e ou propriedades que devero ser
suportadas pelas classes que utilizem a interface, sem a incluso de cdigo de programao na
interface.
O uso de interfaces esta diretamente associada troca de mensagens entre os objetos, desta
maneira o programador cria qualquer nova classe que necessite e assim mesmo as mensagens
continuam sendo trocadas entre objetos sem prejuzos ao sistema.
As classes que implementam uma interface, devem implementar todas as operaes definidas pela
interface e o respectivo cdigo de programao para que sempre que um objeto necessitar trocar
uma mensagem no cause erros.
Veja o exemplo abaixo:

Figura: Exemplo de interface


No exemplo acima, demonstrado o uso de interface com o caso dos pedais de uma bicicleta
onde o pedal da esquerda e o pedal da direita executam os mesmos movimentos, ento,
respondem s mesmas mensagens.
H uma interface chamada Pedal que descreve duas operaes IrParaFrente() e IrParaTrs() e
duas classes que implementam a interface Pedal sendo as classes PedalEsquerda e PedalDireita
que devero responder as mensagens definidas na interface.

Programao Orientada Objetos Reviso: 23/02/2007 - Pgina 14

7. Classe Abstrata
A classe abstrata um tipo de dado bastante similiar Interface onde tambm so definidas as
assinaturas de operaes e propriedades no podendo ser instanciado diretamente por uma
classe, servindo apenas ao propsito de ser um padro para a criao de novas classes como um
contrato. A grande diferena da Classe Abstrata para a Interface a possibilidade de apenas
definir as assinaturas das operaes, deixando a responsabilidade da implementao do cdigo da
operao para a classe que implemente a Classe Abstrata como ocorre com a Interface, ou ento
tambm implementar o cdigo de implementao para a operao na prpria Classe Abstrata
podendo o cdigo ser sobrescrito pela classe implementadora respeitando-se a assinatura original
da operao.

Figura: Exemplo de Classe Abstrata


No exemplo acima, h a classe abstrata Roda e as classes que a implementam Dianteira e
Traseira. Neste caso a classe Traseira utiliza as operaes como foram implementadas na classe
Roda, j a classe Dianteira sobrescreveu a operao Girar para melhor atender ao seu propsito.

Programao Orientada Objetos Reviso: 23/02/2007 - Pgina 15

8. Escopo de classe, varivel e mtodo


Em tempo de desenvolvimento, o programador/ analista deve escolher o escopo de uma classe,
varivel ou mtodo que nada mais como a definio de como ser a visibilidade perante outros
objetos.
Falando em OOP podemos ter os seguintes modelos de escopo:
- Public : todos os objetos visualizam.
- Protected : apenas os mtodos da mesma classe ou classes que recebem herana da
classe so capazes de visualizar.
- Private: apenas os mtodos da mesma classe so capazes de visualizar.
- Package: pode ser visualizado por todas as classes que compartilham do mesmo pacote.

Programao Orientada Objetos Reviso: 23/02/2007 - Pgina 16

9. Orientao a Objetos no ADVPL

Definio
Classes no Protheus podem conter mtodos, propriedades e herana, conforme a sintaxe abaixo:
CLASS <NOME_DA_CLASSE> [FROM <NOME_DA_CLASSE_HERDADA>]
//Declarando uma propriedade/varivel
DATA <NOME_DA_PROPRIEDADE>
//Declarando o mtodo que executado quando a classe criada
METHOD NEW() CONSTRUCTOR
//Declarando o mtodo que no necessita ser implementado pela classe. Utilizado por
interface.
METHOD <NOME_DO_MTODO>(PARAM1, PARAMN) VIRTUAL
//Declarando um mtodo da classe
METHOD <NOME_DO_MTODO>(PARAM1, PARAMN)
ENDCLASS
O mtodo de inicializao executado sempre que uma nova instncia da classe for criada pelo
sistema e sempre deve retornar a prpria classe.
METHOD NEW() CLASS <NOME_DA_CLASSE>
//Coloque as propriedades e funes que devem ser executadas na inicializao
RETURN SELF
A criao de mtodos de uma classe realizada da mesma maneira que j estamos acostumados
a criar funes em ADVPL.
METHOD <NOME_DO_MTODO>(PARAM1, PARAMN) CLASS <NOME_DA_CLASSE>
//Coloque o cdigo de programao da funo.
RETURN

Dicas teis
//Use para acessar propriedades e mtodos da classe
::
ou
:Self
//Use para acessar propriedades e mtodos da classe herdada
:Parent
Importante: Para maiores detalhes sobre Classes e Objetos no ADVPL veja o arquivo de
ajuda do Norton Guides chamado FW19.NG.

Programao Orientada Objetos Reviso: 23/02/2007 - Pgina 17

Modelagem das classes de Exemplo

Programao Orientada Objetos Reviso: 23/02/2007 - Pgina 18

Criao de uma classe

Programao Orientada Objetos Reviso: 23/02/2007 - Pgina 19

Herana com ADVPL

Exemplo da criao de um objeto

Programao Orientada Objetos Reviso: 23/02/2007 - Pgina 20

10. Sugestes de Desenvolvimento

Na construo de um modelo para uma aplicao, as seguintes sugestes devem ser observadas
a fim de se obter resultados claros e consistentes:
1. No comece a construir um modelo de objetos simplesmente definindo classes,
associaes e heranas. A primeira coisa a se fazer entender o problema a ser resolvido.
2. Tente manter seu modelo simples. Evite complicaes desnecessrias.
3. Escolha nomes cuidadosamente. Nomes so importantes e carregam conotaes
poderosas. Nomes devem ser descritivos, claros e no deixar ambiguidades. A escolha de
bons nomes um dos aspectos mais difceis da modelagem.
4. No ``enterre'' apontadores ou outras referncias a objetos dentro de objetos como
atributos. Ao invs disto, modele estas referncias como associaes. Isto torna o modelo
mais claro e independente da implementao.
5. Tente evitar associaes que envolvam trs ou mais classes de objetos. Muitas vezes,
estes tipos de associaes podem ser decompostos em termos de associaes binrias,
tornando o modelo mais claro.
6. No transfira os atributos de ligao para dentro de uma das classes.
7. Tente evitar hierarquias de generalizao muito profundas.
8. No se surpreenda se o seu modelo necessitar vrias revises; isto o normal.
9. Sempre documente seus modelos de objetos. O diagrama pode especificar a estrutura do
modelo, mas nem sempre suficiente para descrever as razes por trs da definio do
modelo. Uma explicao escrita pode clarificar pontos tais como significado de nomes e
explicar a razo para cada classe e relacionamento.
10. Nem sempre todas as construes OMT so necessrias para descrever uma aplicao.
Use apenas aquelas que forem adequadas para o problema analisado.

11. Referncia Bibliogrfica:


1. BOOCH, Grady; RUMBAUGH, James; JACOBSON, Ivar. UML Guia do usurio. Rio de
Janeiro : Campus, 2000.
2. DEITEL, H. M.; DEITEL, P. J..JAVA Como Programar. Porto Alegre : Bookman, 2003.

Programao Orientada Objetos Reviso: 23/02/2007 - Pgina 21

Você também pode gostar