Programação Orientada a Objeto - Parte I
Um exemplo prático em Delphi
Conceito de POO
A programação tradicional (estruturada) leva o programador a pensar no fluxo do programa da primeira linha de código até a ultima, fixando o foco nos programas (procedimento e funções). Já os dados são colocados em segundo plano, sendo seu manuseio de forma passível e em alguns casos retirando sua importância do contexto.
Figura 1 – Arquitetura das linguagens tradicionais.
O paradigma da programação orientada a objetos (POO) muda esse conceito, pois em vez do programador ficar pensando no fluxo do programa, ele deve analisar quais objetos estão relacionados a uma tarefa especifica e quais dados e métodos os torna único.
Figura 2 – Arquitetura da POO.
Na prática a POO proporciona inúmeros benefícios ao desenvolvimento de sistemas, tais como uma maneira eficiente de representar elementos do mundo real para a construção desses sistemas, usando-se para isso classes e objetos. Dessa maneira a reutilização de classes e objetos, além da sua manutenibilidade, diminuem os efeitos causados pelas manutenções dos sistemas.
Mas só com o real conhecimento dos conceitos da orientação a objetos e sua utilização eficiente poderemos obter os benefícios propostos pela POO.
- Classe : É a representação de elementos do mundo real, sendo formado, basicamente, por atributos e métodos. Um atributo é o local onde de armazenamento dos dados, enquanto um método é responsável por realizar ações sobre um ou mais atributos, tais como obter ou modificar os seus valores.
- Objeto : É uma instância de uma classe. Para melhor entender tenha em mente uma analogia com uma variável e seu tipo, onde substituímos a variável pelo objeto e o tipo pela classe.
- Método : É uma sub-rotina interna de uma classe, ela é responsável por executar eventos na classe, estando, dessa maneira, ligadas a mesma.
- Evento : É uma ação, direta ou indireta, sofrida por uma classe. Um exemplo já bastante utilizado nesse curso é o evento OnClick, esse evento chama um método que tem sua funcionalidade implementada pelo programador.
- Abstração : É a capacidade de recriar os objetos do mundo real em um programa, mas levando em consideração somente o relevante ao mesmo. Um exemplo disso seria a utilização de um objeto cliente que é baseado na idéia de uma pessoa, que por sua vez é um ser humano. Não precisamos recriar todas as características de um ser humano, mas somente o relevante ao cliente e que é de interesse do programa.
- Encapsulamento : É a capacidade de tornar atributos e métodos de um objeto ocultos a outros objetos. Evidentemente que devem existir alguns métodos que permitam sua utilização, bastando somente saber quais são e como utilizá-los. Imagine que você está dirigindo um carro, para fazer isso você não precisa conhecer o funcionamento interno do motor, só precisa saber como e quando passa as marchas, entre outras funções.
- Herança : É a capacidade de uma classe definida como filha receber características já existentes de outra classe definida como pai ou mãe, em outras palavras, é a classificação hierárquica existente entre classes. Para entender melhor vamos analisar o exemplo da figura 3, nele temos a classe Mamíferos que dá origem as classes Cachorros e Humanos, essas duas novas classes herdam características da classe Mamíferos mas também têm características distintas entre si. Em seguida a classe Humanos dá origem a outras duas classes, Homens e Mulheres, que herdarão características já definidas na classe Humanas além de terem suas próprias características. Dessa maneira cada nova classe (subclasse) tem características mais especificas do que a classe de origem (superclasse).
- Polimorfismo : É a capacidade de classes diferentes responderem a mesma ordem, mas de maneira diferente. Ainda usando a figura 3 como exemplo, podemos ver que Homens e Cachorros são classes diferentes, mas ambos são capazes de correr, embora que o cachorro corra com as quatro patas, já o homem corre sobre os dois pés.
Figura 3 – Herança entre objetos.
Este artigo foi cedido por http://www.cassic.com.br/ |