Parte 5

<< Click to Display Table of Contents >>

Navigation:  Novatos > Orientação a objetos >

Parte 5

Previous pageReturn to chapter overviewNext page

Descrição

 

O objetivo deste artigo é dar continuidade a uma série de artigos retratando a Orientação a Objetos em conceitos e exemplos práticos no Delphi. Este artigo, especificamente, tratará da interação entre os objetos de um mesmo sistema.

 

Pré-requisitos

 

Habilidade em programação com Delphi em qualquer versão, conhecimento de Object Pascal, noções de Orientação a Objetos dos artigos parte I, II, III e IV publicados no site.

 

Introdução

 

No artigo anterior, estudamos um pouco do encapsulamento e de outros tópicos relacionado à visibilidade nos objetos, concluindo assim o terceiro dos três pré-requisitos fundamentais da orientação a objetos para as linguagens. Eis que iremos aplicar estes conceitos, de maneira a integrar os objetos no sistema.

 

Os objetos – conforme se pode deduzir a partir de toda esta “elocubração” tratada até agora nestes quatro artigos – são elementos projetados para serem partes integrante de um todo, um sistema maior. Eles podem, entretanto, serem considerados individualmente como subsistemas. Isto porque eles apresentam os pré-requisitos básicos para isto: dados e código executável.

 

Ainda de um outro ponto de vista eles podem ser considerados subsistemas, pois encapsulam funcionalidades que são acessadas por outros elementos a eles externos, e a eles é capaz de fornecer respostas às solicitações. Isto quer dizer que eles podem ser vistos como FFFFFFF Se investigarmos por muitos aspectos, os objetos são subsistemas independentes, e para isso foram projetados.

 

Já que temos objetos como “separáveis” de um sistema, conseguimos – como era propósito da própria OO – distinguí-los por escopo de responsabilidades, diminuindo com isso, a complexidade dos sistemas. Consideramos também que objetos diferentes podem ser desenvolvidos separadamente sem prejuízo das suas funcionalidades.

 

Pois já tratamos de características individuais dos objetos como elementos separados do mundo, e neste artigo estudaremos meios de integrá-los, proporcionando-os se comunicarem, e garantindo que possibilitem, juntos, funcionalidades maiores para o sistema como um todo.

 

Objetos podem conter objetos

 

O primeiro fato aqui tratado é o que o título já propõe. Vimos, em quase todos os nossos exemplos, casos de objetos contendo tipos primitivos – isto é, aqueles tipos padrões já definidos na linguagem, que não sofrem os “efeitos” da OO. Mas não tratamos de compor objetos com outros objetos internos.

 

Vamos exemplificar com objetos do mundo real. Imaginemos um computador. Ele possui um propósito – processar informações – e uma gama de “funcionalidades” para que isto seja feito da melhor maneira possível. Iremos tratar aqui o computador como um objeto do sistema.

 

Não muito longe do seu propósito, percebemos que o nosso computador precisa ser dividido em partes independentes, como de fato é. O nosso objeto, agora, será separado em Processador, Memória, disco rígido, fonte de alimentação e dispositivos de entrada e saída. Cada parte terá uma determinada responsabilidade, o que restringe o domínio da complexidade da construção do computador, para os seus engenheiros.  FFFFFFFF

 

Vamos declarar individualmente as partes do nosso modelo imaginário:

 

unit Unit1;

 

type

  TDispositivoES = class   

  end;

      

  TDrive = class(TDispositivoES)

    procedure LerDoDisco; virtual;

    procedure GravarNoDisco; virtual;

  end;

 

  THardDrive = class(TDrive)

    procedure LerDoDisco; override;

    procedure GravarNoDisco; override;

  end;

 

  TFloppyDrive = class(TDrive)

    procedure LerDoDisco; override;

    procedure GravarNoDisco; override;

  end;

 

  TDispositivoEntrada = class(TDispositivoES)

    procedure ReceberDados; virtualabstract;

  end;

 

  TDispositivoSaida = class(TDispositivoES)

    procedure EnviarDados; virtualabstract;

  end;

 

  TTeclado = class(TDispositivoEntrada)

    procedure ReceberDados; override;

  end;

 

  TMouse = class(TDispositivoEntrada)

    procedure ReceberDados; override;

  end;

 

Agora vamos juntar as partes no nosso objeto maior:

 

  TComputador = class

    FProcessador: TProcessador;

    FMemoria: TMemoria;

    FDispositivos: array of TDispositivoES;

    procedure Ligar;

    procedure Desligar;

    procedure Funcionar;

  end;

 

 

Notemos no nosso exemplo que alguns objetos são partes integrantes de um outro objeto. Os dispositivos, processador, memória etc., são partes de um computador de tal maneira que este computador não seria capaz de funcionar sem elas. De igual maneira, estas partes não teriam razão para existirem em outros lugares senão no computador. A exemplos como este – em que as partes possuem uma relação de intimidade tal que os faça dependentes uma da outra – chamamos de composição.

 

 

Mais

***

Parte 6