Classes: quando criá-las?

Delphi

02/11/2003

Olá pessoal!

Sou novo por aqui, e apesar de já ter mexido bastante com o TP e de estar me formando em Análise, tenho algumas dúvidas ´filosóficas´ a respeito de classes.

Pelo que já andei estudando no manual de Object Pascal da Borland, a coisa é realmente fantástica, ou seja, você pode fazer virtualmente o que você quiser e as heranças ajudam bastante no sentido de moldar as classes já existentes.

No que diz respeito à utilização das classes já prontas não há muito o que discutir: é óbvio que é o ideal. Mas... e quanto à criação de novas classes? Quando sabemos que devemos criar uma?

Por que pergunto isso? Vejam, quando estiver programando em OOP devo fazer TUDO com classes? Ou aquilo que puder ser resolvido com uma função deve ser usado como função? Eu não estou conseguindo visualizar o limiar que divide a programação estruturada da programação orientada a objetos, uma vez que o Delpih suporta os dois estilos.

Quando estiver programando em OOP a utilização direta de procedimentos e functions é algo errado ou obsoleto? Ou seja, só devo utilizar procedimentos e funções dentro de classes e chamá-los na forma de métodos? Ou isso ainda é uma questão discutível e depende de estilo de programação?

Em certas linguagens como Java, por exemplo, a própria estrutura da programação força você a fazer tudo através de classes pois a linguagem não suporta a chamada direta à funções (eu acho, não tenho certeza, estou aprendendo Java na faculdade ainda - me desculpem se estiver falando besteira). Mas, o Delphi permite tanto uma forma como outra, e então como saber o que é mais certo fazer?????

Perceberam onde está minha confusão???? Alguém me disse uma vez que se eu usar o Delphi sem ser 100¬ em OOP, não estarei programando em Delphi, mas sim em Turbo Pascal usando apenas os recursos visuais do Delphi. Já numa apostila de Object Pascal da UFRJ, o autor diz que criar classes para utilizar em apenas uma aplicação (se você não pretende reusá-la) é perda de tempo, e neste caso, deve-se preferir funções ou procedimentos. Isso procede, vocês concordam????


Obrigado pela atenção!

Yan Kleber de Moura


Yankleber

Yankleber

Curtidas 0

Respostas

Edilcimar

Edilcimar

02/11/2003

compre o livro do marcelo leão (Delphi 7) ou do marco cantù, o primeiro ensina inclusive a escrever e sobreescrever classes, é um livro ´completo´, obviamente com algumas falhas mas muito bom, ele pode tirar mais de 90¬ das dúvidas.


GOSTEI 0
Yankleber

Yankleber

02/11/2003

Olá Edilcimar,

Grato pela sua mensagem, mas acho que você não captou o ´X´ da questão!

Minha dúvida não é a respeito de [i:66a1111af9][b:66a1111af9]COMO[/b:66a1111af9][/i:66a1111af9] criar classes, mas sim [i:66a1111af9][b:66a1111af9]QUANDO DEVO[/b:66a1111af9][/i:66a1111af9] criá-las.

Obrigado assim mesmo!

Yan Kleber de Moura


GOSTEI 0
Edilcimar

Edilcimar

02/11/2003

vc só vai criar uma classe quando precisar modificar alguma coisa em uma classe já existente reaproveitando total ou parcialmente aquilo que já existia na classe ancestral


GOSTEI 0
Beppe

Beppe

02/11/2003

O Delphi lhe dá a liberdade de escrever classes quando quiser e se quiser. Porém você não estará totalmente livre de usar classes. A não ser que esteja escrevendo uma aplicação de console. O próprio form que você trabalha em cima é uma classe pronta herdade da classe TForm da unit Form. Os eventos que você usa são métodos que o Delphi cria para você.

Antes de escrever uma classes nova, você precisa saber de umas coisas. O Delphi permite e até estimula(olha em SysUtils.pas) a escrita de funções externas às classes. Mas uma idéia de OOP presente(mas bem como eu gostaria) no Delphi é modularização e ocultamento de informações(ops, são duas). Tipo, a classe esconde os dados que estamos trabalhando e necessitamos apenas a interface(os métodos). Você não precisa fazer uma classe que contenha um método que apenas verifique se o número do CPF está bem formado. Mas pode escrever uma classe que localize continuamente strings em outras com um motor de busca, com opção de compilar a pattern para agilizar esta pesquisa.

Criamos classes para evitar que quem usará elas fique criando variáveis para armazenar informações temporárias de uma função, ou melhor, um grupo de funções esteja utilizando.

Criar e usar classes é uma arte, como perceberá. Não existe um chavão: ´Use com moderação´. Nem para funções nem para classes.

Ataliba


GOSTEI 0
As-mad

As-mad

02/11/2003

Como o ataliba falou, criar classes é uma arte. Uma coisa que você sempre deve ter em mente, programadores não são apenas pessoas que ficam escrevendo um programa, pelo menos não deveriam, eles são, acima de tudo, arquitetos do abstrato. Ou seja, você deve lembrar que sua aplicação deve ser expansível (por mais que seja para um único cliente, e se ele resolve fazer alterações, implementações?), manipulável e compreensível. Ou seja, você não deve apenas criar um formulário e umas variáveis, criar um monte de funções parecidas, trazer dezenas de dados pra ´qdo vc precisar trabalhar com eles´ . Vc deve arquitetar algo completo, se vc precisa de uma informação do banco de dados, vc só precisa de um método e um parâmetro, se vc precisa de uma tela de cadastro, já tem uma tela base (olha a classe aí) criada. Se vc precisa de uma tela de busca, que tal criar uma tela e aproveitar os campos fields do objeto query e criar uma rotina única tendo o trabalho uma única vez, e um trabalho bem feito? Como vc está no começo de java, lembre-se que a filosofia deles (pelo q eu saiba) é modelar o mundo real. Objetos são objetos no mundo real como no abstrato, com métodos para manipulá-los e propriedades pertinentes. Classes nada mais são do que a ´receita´ do objeto (objeto é instância da classe). Ou seja, a classe é poderosíssima, delphi é poderosíssimo, só que tem que saber usá-lo, tem que saber ser arquiteto e artista, para criar algo útil, agradável, prático e, enfim, de qualidade. Leia livros tanto de java quanto de delphi, a idéia de Java sobre trabalhar com objetos é ótima, a praticidade do delphi é ótima, a união dos dois então...


GOSTEI 0
Yankleber

Yankleber

02/11/2003

Obrigado pessoal.

As respostas estão realmente agora chegando perto do que eu precisava saber, e tudo começa a ficar mais claro.

A questão que me levou a iniciar esse tópico é aquela velha idéia de que nem todas as vezes que você tem uma ferramenta à sua disposição você tem que necessariamente usá-la. Tipo, não é porque você tem um serrote, que vai sair procurando alguma coisa para serrar na sua casa: você só vai usá-lo se realmente tiver que serrar alguma coisa.

É a mesma coisa com as classes: não é porque a linguagem (no caso o Delphi) permite a criação delas que você vai sair criando classes a torto e a direito, estou correto?

Acredito que compreendi o ´x´ da questão, e talvez cometa algumas gafes no início, mas depois irei me ajustando. É a primeira vez que irei realmente trabalhar com classes.

Sou programador em Visual Basic há algum tempo, e embora nunca tenha trabalhado com classes diretamente nele (a criação de classes no VB não é fácil e clara como no Delphi), já criei componentes OCX (que não deixam de ser classes, uma vez que possuem métodos e propriedades e têm como objetivo o encapsulamento e ocultamento de informações bem como a instanciação do componente para sua reutilização).

Achei o exemplo do CPF muito apropriado. Eu, por exemplo, tenho uma função que cria chave primária, onde você passa o nome da tabela, o nome do campo que contém a PK e o tamanho da chave que você quer. Puxa, isso pode ser muito bem feito por uma simples função, então por que criar uma classe????

É isso aí pessoal, mais uma vez muito grato!

Um abraço!

Yan Kleber de Moura


GOSTEI 0
POSTAR