Question

Je développe une application en Java, qui gère une base de données des prêts de la banque. J'ai une expierience en application de développement et j'ai une question qui pourrait être idiot, mais il est quelque chose que je parle toujours depuis que je suis l'apprentissage des langues en développement et n'a jamais obtenu une réponse conviencing.

Dans mon programme, j'ai de nombreuses classes et méthodes, que j'utiliser comme outils génériques. Par exemple, j'ai une classe d'écriture Excel, une classe pour la lecture de fichiers / écriture, une classe qui manipule des chaînes de différentes manières, une classe pour montrer Dialogs / messages dans un format par défaut de la mine, une classe pour les fonctions mathématiques spécifiques (comme Math), etc.

Je ne peux pas imaginer ces classes comme des choses réelles (comme les classes / objets sont destinés à), mais ils viennent à l'esprit comme des boîtes à outils. Voilà pourquoi je les fais statique. De cette façon, j'écris par exemple

excelWriter.create("C:\temp.xls");
excelWriter.append("mydata1\tmydata2\nmydata3\tmydata4");
excelWriter.close();

plutôt que

ExcelWriter myExcelWriter;
myExcelWriter.create("C:\temp.xls");
myExcelWriter.append("mydata1\tmydata2\nmydata3\tmydata4");
myExcelWriter.close();

Cela me convient mieux pour la raison que je pense à une boîte à outils comme quelque chose qui est toujours là pour moi et je ne ai pas besoin de créer un à chaque fois que l'objet que je veux l'utiliser. N'est pas Math de C ++ le même cas et statique aussi? Je l'ai discuté avec plusieurs de mes collègues et amis de codage et la plupart d'entre eux disent que je dois créer un objet parce que ce la programmation orientée objet est tout au sujet.

Je comprends ce qu'ils ont dit dans un autre contexte: Dans mon temps libre je développe un jeu de cartes en utilisant VB.net. Là, j'avais des cours pour le jeu, le joueur, le pont, la main. Les objets que je fait où beaucoup de toutes les classes, parce que j'ai beaucoup de jeux, les joueurs, les ponts, les mains. Et ils peuvent être imaginés comme des choses réelles. Il est spécifiquement très différent lorsque vous développez un jeu. Le développement d'un jeu est beaucoup plus orienté objet, car il contient des choses réelles .

Je me demandais, je suis en quelque sorte terriblement mal ici? Je voudrais entendre oppinions sur ce oop est tout au sujet en profondeur. Je voudrais aussi entendre ce que les classes statiques sont pour.

Merci

Était-ce utile?

La solution

Non, une classe contenant des fonctions membres statiques ne serait pas la bonne chose dans ce cas, au moins à mon avis. La deuxième classe ExcelWriter serait mieux. Quoi qu'il en soit, où vous stockez la poignée de fichier pour votre sortie Excel? Pas dans une variable statique, je l'espère? C'est un candidat de choix pour un membre de données pour cette classe.

Essayez de penser, dans ce cas, de l'objet comme représentant le flux de sortie que vous écrivez. À l'avenir, vous voudrez peut-être ouvrir deux flux de sortie en même temps, ce qui ne serait pas possible avec votre classe « boîte à outils ».

Parfois, les classes ne contenant que des fonctions membres statiques peuvent être utiles comme moyen de regrouper les fonctions liées, mais cela est rare et signifie souvent la classe peut être repensée autour d'un objet contenant des données. Les fonctions membres statiques peuvent être utiles comme un moyen d'avoir différents constructeurs pour une classe, par exemple.

Autres conseils

classes statiques et les fonctions ne doivent être utilisées pour des fonctions neutres, et les calculs. Seulement quand vous avez juste besoin d'obtenir une réponse pour quelque chose.

conception OOP est très facile quand vous pensez à ce que vous faites et en utilisant littéralement. Par exemple, en vous êtes la cause, vous avez utilisé le mot « myExcelWriter », qui est un écrivain Excel. Donc, si elle est quelque chose, il est un objet. Ce qui signifie qu'il a besoin d'une instance.

Toujours juste décrire ce que vous faites à vous-même, si ce que vous faites peut être décrit par un nom alors il est un objet. Si c'est un adjectif, il est un membre d'attribut ou une classe. Si c'est un verbe il est une méthode. Si c'est un adverbe il est un attribut ou une variable passée à la fonction.

classes statiques sont des outils qui contiennent des fonctions indépendantes, et il suffit de faire quelques calculs avec les variables d'entrée. (Encore une fois, comme Math, qui calcule seulement 2 chiffres)

Les fonctions statiques dans les classes sont des outils qui sont utilisés sur des objets de cette classe qui ne ont pas besoin de travailler l'état d'une instance. (Comme Int.Parse())

POO est beaucoup plus proche d'une vraie langue de l'OMI, qui est pourquoi il est plus intuitif pour programmer cette façon.

Les classes ne le font pas Vous pour représenter une chose réelle mondiale. Si votre utilisation d'entre eux rend votre programme plus facile à comprendre, vous le faites à droite.

Cela dit, une classe doit avoir des données et des méthodes. Vos classes Excel et fichiers semblent bon pour moi, mais méfiez-vous d'une classe qui ne dispose que des méthodes et aucune donnée.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top