Frage

Ich entwickle eine Anwendung in Java, die eine Datenbank der Bank Darlehen verwaltet. Ich habe einige expierience in Anwendung zu entwickeln, und ich habe eine Frage, die dumm sein könnte, aber es ist etwas, was ich immer sprechen, da habe ich die Entwicklung Sprachen gelernt und nie eine conviencing Antwort.

In meinem Programm habe ich viele Klassen und Methoden, die ich als generische Werkzeuge verwenden. Zum Beispiel habe ich eine Klasse für Excel schreiben, eine Klasse für Datei Lesen / Schreiben, eine Klasse, die manipuliert Saiten auf verschiedene Weise, eine Klasse Dialoge / Nachrichten in einem Standardformat von mir, eine Klasse für bestimmte mathematische Funktionen zeigen (wie Math), etc.

Ich kann diese Klassen vorstellen, wie reale Dinge (wie Klassen / Objekte sollen), aber sie kommen als Werkzeugkästen mir in den Sinn. Deshalb habe ich sie statisch zu machen. Auf diese Weise schreibe ich zum Beispiel

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

statt

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

Das paßt mich besser aus dem Grunde, dass ich denke, eine Toolbox wie etwas, das immer für mich da ist und ich brauche nicht ein Objekt jedes Mal wenn ich es benutzen wollen erstellen. Ist das nicht C ++ 's Math der gleiche Fall und statisch auch? Ich habe es diskutiert mit vielen meiner Kollegen und Codierung-Freunde und die meisten von ihnen sagen, dass ich ein Objekt zu erstellen, weil das ist, was die Programmierung objektorientiert auf sich hat.

Ich verstehe, was sie in einem anderen Zusammenhang sagte: In meiner Freizeit Entwicklung Ich habe ein Kartenspiel VB.net verwenden. Da ich hatte Klassen für Spiel, Spieler, Deck, Hand. Die Objekte ich gemacht, wo viele aus jeder Klasse, weil ich viele Spiele haben, Spieler, Decks, Hände. Und sie können als reale Dinge vorstellen. Es ist speziell sehr unterschiedlich, wenn Sie ein Spiel zu entwickeln. ein Spiel Der Entwicklung ist viel mehr objektorientiert, weil es reale Dinge enthält .

Ich habe mich gefragt, bin ich falsch irgendwie schrecklich hier? Ich möchte oppinions über hören, was oop alles um in der Tiefe ist. Ich möchte auch hören, was statische Klassen für sich.

Danke

War es hilfreich?

Lösung

Nein, eine Klasse nur statische Member-Funktionen enthält, würde nicht das Richtige in diesem Fall, zumindest meiner Meinung nach. Die zweite ExcelWriter Klasse wäre besser. Wie auch immer, wo speichern Sie die Datei-Handle für Ihre Excel-Ausgabe? Nicht in einer statischen Variablen, hoffe ich? Das ist ein idealer Kandidat für ein Datenelement für diese Klasse.

Versuchen Sie in diesem Fall von dem Objekt zu denken, da den Ausgangsstrom darstellt, dass Sie zu schreiben. In Zukunft mögen Sie vielleicht zwei Ausgangsströme zur gleichen Zeit öffnen, die mit Ihrer „Toolbox“ Klasse nicht möglich wären.

Manchmal Klassen nur statische Member-Funktionen enthalten, können als eine Möglichkeit der Gruppierung bezogenen Funktionen nützlich sein, aber das ist selten und oft bedeutet, dass die Klasse ein Objekt werden kann, die Daten enthält, neu gestaltet um. Statische Member-Funktionen können nützlich sein, als eine Möglichkeit, verschiedene Konstrukteure zum Beispiel für eine Klasse, zu haben.

Andere Tipps

Statische Klassen und Funktionen sollten nur für neutrale Funktionen und Berechnungen verwendet werden. Nur wenn Sie brauchen nur eine Antwort für etwas zu bekommen.

OOP-Design ist sehr einfach, wenn Sie denken, was Sie tun und mit buchstäblich. Zum Beispiel in Sie ist Fall verwendete man das Wort „myExcelWriter“, die ein Excel-Schriftsteller ist. Also, wenn es etwas ist, ist es ein Ziel. Was bedeutet, dass es eine Instanz benötigt.

Immer nur beschreiben, was Sie selbst tun, wenn das, was Sie tun können von einem Substantiv beschrieben werden, dann ist es ein Objekt. Wenn es ein Adjektiv ist, ist es ein Attribut oder Klassenmitglied. Wenn es ein Verb ist, ist es eine Methode. Wenn es ein Adverb ist, ist es ein Attribut oder eine Variable an die Funktion übergeben.

Statische Klassen sind Werkzeuge, die Funktionen enthalten, die unabhängig sind, und tun nur einige Berechnungen mit den Eingangsgrößen. (Wieder wie Math, dass berechnet nur 2 Zahlen)

Statische Funktionen in Klassen sind Werkzeuge, die auf Objekte dieser Klasse verwendet werden, die eine Instanz des Staates zur Arbeit nicht brauchen. (Wie Int.Parse())

OOP ist viel näher an eine echte Sprache IMO, das ist, warum es mehr intuitiv auf diese Weise zu programmieren.

Klassen nicht Haben eine reale Welt, was zu repräsentieren. Wenn Ihr Gebrauch von ihnen Ihr Programm leichter macht, zu verstehen, Sie tun es richtig.

sagte, dass, sollte eine Klasse sowohl Daten als auch Methoden. Ihre Excel und Dateiklassen scheinen gut zu mir, aber einer Klasse vorsichtig sein, dass nur über Methoden und keine Daten.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top