Introdução à POO - Artigo Clube Delphi 108

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (7)  (0)

Artigo da Revista Clube Delphi Edição 108.

Esse artigo faz parte da revista Clube Delphi edição 108. Clique aqui para ler todos os artigos desta edição

Introdução à POO

Aprenda, de uma forma simples, a programar da forma correta

 

O objetivo deste artigo é apresentar, de uma forma simples e prática, os principais conceitos da programação orientada a objetos com o Delphi. É um artigo voltado ao público iniciante, tanto que utilizarei uma abordagem bastante didática e fácil, ao invés de aplicar os conceitos em um exemplo complexo. Aprendendo o básico sobre os principais recursos da POO, entendendo como o Delphi permite a orientação a objetos em uma linguagem elegante, permitirá a você aplicar futuramente os seus conhecimentos em projetos reais.

Você aprenderá como criar classes, instanciar objetos, usar a herança, abstração e polimorfismo. Definirá propriedades, entenderá os diferentes especificadores de visibilidade (private, public, protected e published), criará métodos de classe, get/set, estáticos e abstratos, construtores e destrutores. Conhecerá importantes palavras-chave da Delphi Language usadas na POO. Aprenderá a dar um passo além da POO, ao transformar classes em componentes, a utilizar pacotes para organizar e agrupar units, verificar dependências e muito mais.

 

Princípios básicos da Orientação a Objetos

A Orientação a Objetos está fundamentada em quatro pilares: abstração, encapsulamento, herança e polimorfismo. Mesmo para aqueles que desenvolvem há anos com o Delphi, esses conceitos podem passar até despercebidos. Ao contrário de linguagens totalmente orientadas a objeto, como Java e C#, o Delphi não obriga que você desenvolva um sistema usando técnicas de OO.

O apelo RAD da ferramenta faz com que os desenvolvedores construam seu software parcialmente ou totalmente orientado a eventos (EDP - Event-Driven Programming). É muito simples colocar um ClientDataSet no DataModule, criar um manipulador para o evento OnNewRecord e inserir código para inicializar dados. Da mesma forma, é simples inicializar controles de um formulário no seu evento OnShow. É possível que você tenha criado um sistema completo sem sequer ter criado uma única classe! Veja que o Delphi cria uma classe para o formulário, uma para o DataModule etc. Mas e você, cria uma classe para processar regras de negócio?

É impossível falar em orientação a objetos sem recorrer ao mundo real, e sem recorrer à teoria (não se preocupe com a parte teórica, vamos ver tudo isso na prática mais adiante), o que consequentemente também nos obrigará a fazer muitas analogias. De fato, muito da OO é uma cópia fiel do que temos ao nosso redor. Um carro é um objeto, composto de outros objetos, que podem ser trocados. Um carro possui atributos, como sua cor, tamanho, modelo, número de portas, ano de fabricação, combustível, autonomia etc. Então, nada melhor que usar a vida real para entender a OO, técnica que usarei exaustivamente durante todo esse artigo.

Antes de começar, vamos rever aquilo que aprendemos no primeiro dia de aula de programação, a diferença entre classe e objeto. A analogia perfeita, uma classe é uma “receita de bolo”. Objetos são os “bolinhos” que você faz a partir desta receita. TForm é uma classe. Form1, ou FormCliente, é um objeto, uma instância real da classe. Podemos ter várias instâncias de uma mesma classe. No Delphi, por exemplo, temos em uma aplicação com vários ClientDataSets, mas todos construídos a partir da classe TClientDataSet.

Vamos agora examinar a definição dos quatro pilares básicos de qualquer linguagem orientada a objetos:

Abstração: capacidade de representar conceitos do domínio do problema, ressaltando apenas o que for relevante para a aplicação em questão. A definição da classe em Delphi atende a esse requisito, pois ela é um modelo limitado de alguma entidade real, que implementa apenas as características que são necessárias para a aplicação, sendo desenvolvida em um dado contexto.

Encapsulamento: a linguagem deve permitir a definição de módulos auto-suficientes, possibilitando a implementação do conceito de ocultação de informação (information hiding), ou seja, esconder os detalhes internos. O uso dos especificadores de visibilidade (private e protected, por exemplo) e o comportamento dos objetos em Delphi reforçam esse princípio, principalmente se o desenvolvedor usar propriedades nas classes, como forma de acesso aos campos internos.

Herança: mecanismo que permite a definição de uma hierarquia de classes, com o objetivo de reutilizar características já definidas e estendê-las em níveis maiores de detalhes ou especialização. O Delphi implementa um mecanismo eficiente de herança simples (apenas uma classe ancestral – não há suporte para herança múltipla de classes).

Polimorfismo: classes descendentes podem implementar de forma diferente um conjunto de operações comuns definidas na classe base (no Delphi, usamos as diretivas "

A exibição deste artigo foi interrompida :(
Este post está disponível para assinantes MVP

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?