Domanda

Sto sviluppando un'applicazione in Java, che gestisce un database di prestiti della banca. Ho qualche expierience in applicazione di sviluppo e ho una domanda che potrebbe essere stupido, ma è qualcosa che ho sempre parlare da quando ho imparato lingue in via di sviluppo e non ho mai ricevuto una risposta conviencing.

Nel mio programma ho molte classi e metodi, che uso come strumenti generici. Per esempio, ho una classe per la scrittura Excel, una classe per la lettura di file / scrittura, una classe che manipola le stringhe in vari modi, una classe per mostrare finestre di dialogo / I messaggi in un formato predefinito di mine, una classe per specifiche funzioni matematiche (come Math), ecc.

Non riesco a immaginare quelle classi come cose reali (come le classi / oggetti sono destinati a), ma mi vengono in mente come caselle degli strumenti. Ecco perché li faccio statica. In questo mio modo di scrivere per esempio

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

anziché

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

Questo mi si adatta meglio per la ragione che penso a una serie di strumenti come qualcosa che è sempre lì per me e non ho bisogno di creare un oggetto ogni volta che voglio usarlo. C ++ Math s 'non è lo stesso caso e statico anche? Ho discusso con molti dei miei colleghi e di codifica-amici e la maggior parte di loro dire che devo creare un oggetto perché è quello che la programmazione orientata agli oggetti è tutto.

ho capito quello che hanno detto in un altro contesto: Nel mio tempo libero ho sviluppato un gioco di carte utilizzando VB.net. Lì ho avuto le classi per il gioco, il giocatore, ponte, a mano. Gli oggetti che ho fatto in cui molti di ogni classe, perché ho molti giochi, i giocatori, i ponti, le mani. E possono essere immaginati come cose reali. È proprio molto diverso quando si sviluppa un gioco. lo sviluppo di un gioco è molto più orientato agli oggetti perché contiene cose reali .

Mi chiedevo, sono io in qualche modo terribilmente sbagliato qui? Mi piacerebbe sentire oppinions su ciò che OOP è tutto in profondità. Vorrei anche per sentire quali classi statiche sono per.

Grazie

È stato utile?

Soluzione

No, una classe che contiene solo funzioni membro statiche non sarebbe la cosa giusta in questo caso, almeno a mio parere. La seconda classe ExcelWriter sarebbe meglio. In ogni caso, dove stai archiviano l'handle di file per l'output di Excel? Non in una variabile statica, spero? Questo è un ottimo candidato per un membro di dati per questa classe.

Prova a pensare, in questo caso, l'oggetto come rappresentante il flusso di output che si sta scrivendo. In futuro, si potrebbe desiderare di aprire due flussi in uscita, allo stesso tempo, che non sarebbe possibile con la tua classe "cassetta degli attrezzi".

A volte, classi contenenti solo funzioni membro statiche può essere utile come un modo per raggruppare funzioni correlate, ma questo è raro e spesso significa che la classe può essere riprogettata attorno a un oggetto contenente dati. funzioni membro statiche possono essere utile come un modo per avere costruttori diversi per una classe, per esempio.

Altri suggerimenti

classi e funzioni statiche devono essere utilizzati solo per funzioni di neutro e calcoli. Solo quando hai solo bisogno di avere una risposta per qualcosa.

progettazione orientata agli oggetti è molto facile quando si pensa di quello che stai facendo e l'utilizzo letteralmente. Per esempio sei caso, si è utilizzato il termine "myExcelWriter", che è uno scrittore di excel. Quindi, se è qualcosa, è un oggetto. Il che significa che ha bisogno di un'istanza.

Sempre solo descrivere quello che stai facendo a te stesso, se quello che stai facendo può essere descritta da un sostantivo, allora si tratta di un oggetto. Se si tratta di un aggettivo è un membro di attributo o classe. Se si tratta di un verbo si tratta di un metodo. Se si tratta di un avverbio è un attributo o una variabile passata alla funzione.

classi statiche sono strumenti che contengono funzioni che sono indipendenti, e basta fare alcuni calcoli con le variabili di input. (Ancora come Math, che appena calcola 2 numeri)

funzioni statiche nelle classi sono strumenti che vengono utilizzati su oggetti di quella classe che non hanno bisogno di stato di un grado al lavoro. (Come Int.Parse())

OOP è molto più vicino a un vero linguaggio IMO, è per questo che è più intuitivo per programmare in questo modo.

Corsi no sono per rappresentare un vero e proprio cosa mondo. Se l'utilizzo di loro rende il programma più facile da capire, si sta facendo nel modo giusto.

Detto questo, una classe deve avere entrambi i dati e metodi. I suoi corsi di excel e di file sembrano buono con me, ma diffidare di una classe che ha solo metodi e non ci sono dati.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top