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

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.

1.2

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