Creazione di un progetto Java senza utilizzare alcun oggetto e solo chiamando metodi statici sull'input?

5

Sto creando un programma che prende un documento, lo estrae e poi lo sposta in un database. Ho fatto la maggior parte di questo ora e mi sono reso conto che non ho fatto nessun esempio di classi che ho creato (ho creato esempi di altre cose come lettori e array bufferizzati, ecc.).

Questo è cattivo? Mi sembra di avere solo classi che sono una raccolta di metodi correlati che sono chiamati staticamente per manipolare i miei dati (che sono memorizzati come una stringa) fino a quando non vengono aggiunti a un database. Come potrebbe fare un programmatore esperto se la mia tecnica è considerata ingenua o cattiva?

    
posta Dan Savage 21.07.2015 - 15:16
fonte

3 risposte

4

Per questo particolare problema, non è terribile. Quello che stai facendo è essenzialmente lo scripting di un processo di importazione, che è un problema imperativo piuttosto diretto. Java forse non è lo strumento migliore per quel lavoro, ma va bene.

Un programmatore esperto potrebbe creare una struttura di dati intermediari per rappresentare i dati che entrano nel database per aiutare se mai provengono da una fonte diversa dal file. Potrebbero astrarre il file o il database in modo da poter avere diversi obiettivi di importazione / output. Ma potrebbe anche essere un eccesso di tecnologia a seconda dell'ambiente e delle esigenze.

    
risposta data 21.07.2015 - 15:23
fonte
3

Il punto di orientamento all'oggetto non è quello di contare le classi definite dall'utente e giudicare tramite "more == better".

L'istanziazione di un oggetto è utile se si hanno realmente più cose nel campo del problema che hanno un comportamento identico ma un'identità distinta. Hai visto come funziona con i flussi: si legge da una fonte, la successiva da un'altra; leggere e scrivere i flussi sono diversi ma strettamente correlati, quindi ha senso che entrambi ereditino dalla stessa classe, ecc. Questi sono tutti buoni motivi per usare gli idiomi OOP; è meglio scrivere la logica per fare qualcosa una volta e quindi riutilizzarlo, e se la logica è legata a dati specifici dell'istanza (es. il nome del file sorgente), allora il modo logico di raggrupparli è quello di creare una classe con i dati e i metodi che funzionano su di essa.

Tuttavia , se il tuo problema è così piccolo che non ripeti nulla, cioè se leggi veramente un paio di cose da un posto, esegui una trasformazione e poi le scrivi in un altro posto, c'è un piccolo uso nella definizione di oggetti e classi per farlo quando è davvero solo un elenco di passaggi da eseguire. (Separare le fasi in metodi più piccoli, anche se ognuno è chiamato una sola volta, è comunque una buona idea, ma non è strettamente correlato a OOP - è una buona idea anche in linguaggi non-object.)

In breve, non abbatterti per non aver creato la tua classe. Una volta che hai incontrato la nostra prima classe di problemi in cui ha ha senso definire una classe con più istanze, diventa più facile giudicare quando ciò ha senso e quando si tratterà di una finestra per fondamentalmente non - Soluzione per problemi dinamici.

    
risposta data 21.07.2015 - 15:23
fonte
0

Non puoi creare un programma Java senza oggetti. Tutto ciò che instanziate è un oggetto. I metodi statici che chiamate sono chiamati su istanze dell'oggetto Class della loro classe.

Ma sì, in genere è una cattiva idea utilizzare un'unica grande classe con metodi solo statici. Diventa terribilmente ingombrante molto velocemente.
Piuttosto che evitare il problema dell'apprendimento dell'orientamento agli oggetti, peggiorando le cose per te in futuro man mano che i tuoi programmi si ingrandiscono, fai lo sforzo ora di avvolgerti nella mente ora che le tue creazioni sono ancora piccole e facili da immaginare nella tua testa. br> Prendi dei libri decenti, chiedi a qualcuno di darti istruzioni preferibilmente, non pensare di poter evitare per sempre il problema o risolverlo semplicemente facendo domande su alcuni forum o guardando video su YouTube.

    
risposta data 21.07.2015 - 15:46
fonte

Leggi altre domande sui tag