CARACTERÍSTICAS DO AMBIENTE DELPHI (Object Pascal) O Borland Delphi provém do Borland Pascal, que por sua vez é herdeiro

das versões da Borland de compiladores Pascal para DOS. Famosos por sua eficiência e robustez, esses compiladores fizeram história na década de 80. Nascendo sobre essa base já existente, o Delphi pôde desde o início implementar praticamente todo o suporte à OO que a Borland já colocava à disposição de seus compiladores mais antigos. Embora possamos pensar nos objetos de interface do ambiente Delphi como objetos pertencentes à uma hierarquia de classes definida pelo fabricante, também é possível criarmos nossa própria hierarquia a partir de classes criadas especificamente para a resolução de um problema. Há uma diferença básica nos dois universos paralelos de classes que convivem no desenvolvimento de uma aplicação Delphi: há as classes criadas em Object Pascal, linguagem nativa do ambiente, que o programador desenvolve para o sistema que está criando, conforme veremos a seguir, mas há também uma grande hierarquia de classes referentes aos objetos que esse sistema usará para interfacear o usuário com a hierarquia de classes específica criada para o problema. Todos os elementos visíveis da interface podem ser considerados classes no sentido em que possuem dados (propriedades) e procedimentos (métodos) que podem ser acessados via outras classes, além dos internos (privados) não visíveis. Essas classes fazem parte de uma hierarquia que implementa herança. Os métodos das classes mais altas podem ser herdados pelas classes inferiores. Desta forma, quando a Borland criou o objeto botão de comando, não precisou reescrever métodos como por exemplo pintar o botão na janela. Bastou herdá-los de classes onde ele já havia sido definido. Também há procedimentos anulados, ou seja, redefinidos em classes hierárquicas inferiores, pois nem sempre o mesmo procedimento faz a mesma coisa em todos os objetos. Podemos criar classes (objetos de interface), inseri-la na hierarquia Delphi já existente, para que herde dados (atributos) e métodos, usando essa classe a partir daí como se ela fizesse parte do ambiente original. Embora essa visão de OO seja importante e esteja no Delphi, há uma outra estrutura de classes independente dela: é a estrutura de classes criadas em Object Pascal. Fazemos uma diferenciação entre o Delphi e o Object Pascal (OP) para que a separação dessas estruturas fique clara. Uma classe criada no código OP é usada especificamente em um problema, embora, como qualquer outra classe, possa ser reutilizada. Isso deve ser, entretanto, feito explicitamente. A estrutura de classes do Delphi, que é um ambiente e não uma linguagem de programação, diz respeito ao próprio ambiente e suas facilidades, ou seja, classes de objetos de interface ou de implementação de facilidades de programação. Na verdade, essas classes são as primeiras a serem utilizadas pelos programadores iniciantes que não se animam ainda a criar suas próprias classes via código. Desta forma, o código OP não precisa ser orientado a objetos. A criação de uma classe Object Pascal lembra seus antepassados C e Pascal: Type nome_da_classe = class begin x,y,z : tipo; procedure/function nome( ... ); end; procedure/function nome_da_classe.nome (... )

implementation e a parte opcional initialization. mas apenas implementamos o código do . O procedimento na classe hierarquicamente superior recebe a palavra virtual após sua declaração. através do método Create. Na verdade seriam as classes Delphi propriamente ditas.. enquanto que na classe que vai implementar uma nova versão desse procedimento há o uso da palavra override após a declaração do procedimento. com dados e métodos públicos e privados. na qual membros private de uma classe não são acessíveis fora dela. Quando declaramos uma parte da classe como private.. onde está o código a ser executado quando a Unit é carregada. não usamos nem virtual nem override. Devemos prestar muita atenção para o mecanismo de herança do Delphi.. além de terminá-lo com Free. end. Para que uma Unit possa usar uma classe declarada em outra. end. As partes public de uma classe Object Pascal em Delphi são acessíveis em qualquer parte do programa. O Delphi tem seu código escrito dentro de uma unidade física e lógica chamada Unit. Entretanto. desde que declaradas na seção Uses das mesmas. caminhao = class (meios_de_transporte) O polimorfismo é implantado em OP com o uso das palavras virtual e override. Para que uma classe em OP seja declarada filha de uma pré-existente. outras classes da mesma Unit poderão ter acesso a ela. Devemos criar os objetos manualmente. pois são relativas ao ambiente de programação conhecido como Delphi. Declaramos constructor antes do procedimento construtor. O Delphi também suporta construtores. contida em um arquivo de extensão PAS.. deve ser declarada com essa informação: type meios_de_transporte = class . Também há a possibilidade de criarmos um procedimento na classe-filha que não anule inteiramente o procedimento de mesmo nome já existente na classe-mãe. ao contrário das classes definidas em Object Pascal. Neste caso. Esta implementação é diferente da do C++. As Units Delphi podem ser acessadas por outras. é necessário que um objeto dessa classe tenha sido declarado na seção interface da Unit. Caso estejamos usando o Object Pascal para gerar um componente Delphi. seguindo uma hierarquia pré-existente do ambiente. esta parte engloba procedimentos e dados que não serão acessíveis de fora da Unit. que têm mais a ver com o código do programa em si. devido às particularidades inerentes ao seu ambiente.begin . Uma Unit possui três partes principais: interface. podemos usar ainda a palavra reservada published para criar propriedades em componentes Delphi acessíveis em tempo de programação. Um componente Delphi pode ser considerado uma classe. Não é necessário que o construtor possua o mesmo nome da classe ao qual pertence. var nome_do_objeto : nome_da_classe. enquanto que as partes protected são acessíveis pela classe onde elas estão e as classes que as herdam.

informando que este procedimento será implementado apenas nas classesfilhas. Caso o procedimento na classe-mãe não possua implementação e esteja declarado nela apenas para efeito de herança. Esses objetos são as instâncias da classe ativas no programa. estas fazendo o papel dos dados.procedimento na classe-filha e dentro do mesmo chamamos a versão anterior com inherited. Inicialmente. atuando sobre suas propriedades. Desta forma. O Delphi permite a criação de novas classes de interface que podem ser disponibilizadas para o ambiente. o procedimento não sofre anulação total. . as linguagens visuais para Windows apresentam duas visões distintas de orientação a objetos. O conceito de orientação a objetos se encaixa perfeitamente nessa conjuntura: cada objeto possui métodos que. Devido às características inerentes ao sistema operacional. de onde o programador tira os objetos que comporão a interface do sistema. Há mecanismos interativos de criação de classes que facilitam sua criação. Possuem seus métodos e propriedades. podemos facilmente perceber que a paleta de objetos presente em praticamente todas essas linguagens na verdade poderia se chamar paleta de classes. usamos a palavra reservada abstract na declaração do mesmo. alteram seu estado. As classes de interface já existentes estão organizadas dentro de uma estrutura hierarquizada que facilita o desenvolvimento pelo programador de novas classes aproveitando o mecanismo de herança para diminuir o trabalho e manter a coerência entre as classes.