Pregunta

estoy desarrollando una aplicación en Java, que gestiona una base de datos de los préstamos del banco. Tengo un poco de expierience en el desarrollo y la aplicación tengo una pregunta que podría ser tonto, pero es algo que yo siempre hablo desde que he estado aprendiendo idiomas en desarrollo y nunca tuvo una respuesta conviencing.

En mi programa tengo muchas clases y métodos, que utilizo como herramientas genéricas. Por ejemplo, tengo una clase para la escritura de Excel, una clase para la lectura de archivos / escritura, una clase que manipula cadenas de varias maneras, una clase para mostrar cuadros de diálogo / mensajes en un formato predeterminado de la mina, una clase de funciones matemáticas específicas (como matemáticas), etc.

No me puedo imaginar esas clases como las cosas reales (como clases / objetos están destinados a), pero vienen a mi mente como cajas de herramientas. Por eso les hago estática. De ese modo escribo por ejemplo

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

en lugar de

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

Esto me adapte mejor por la razón que pienso en una caja de herramientas como algo que siempre está ahí para mí y no necesito para crear un objeto cada vez que yo quiero usarlo. No es C ++ Matemáticas 's el mismo caso y también estática? He hablado con muchos de mis colegas y codificación de los amigos y la mayoría de ellos decir que tengo que crear un objeto porque eso es lo que la programación orientada a objetos se trata.

Yo entiendo lo que dijeron en otro contexto: En mi tiempo libre me he estado desarrollando un juego de cartas usando VB.net. Allí tuve clases de juego, el jugador, cubierta, mano. Los objetos que hizo que muchos de cada clase, porque tengo muchos juegos, los jugadores, las cubiertas, las manos. Y pueden ser imaginados como las cosas reales. Concretamente es muy diferente cuando está desarrollando un juego. El desarrollo de un juego es mucho más orientado a objetos, ya que contiene las cosas reales .

Me preguntaba, soy yo de alguna manera terriblemente mal aquí? Me gustaría escuchar opiniones acerca de lo que se trata la programación orientada a objetos en profundidad. También me gustaría saber qué clases estáticas son para.

Gracias

¿Fue útil?

Solución

No, una clase que contiene funciones miembro estáticas solamente no sería lo correcto en este caso, al menos en mi opinión. La segunda clase ExcelWriter sería mejor. De todos modos, ¿dónde almacenar el identificador de archivo para la salida de Excel? No de una variable estática, espero? Esto es un candidato ideal para un miembro de datos para esta clase.

Trate de pensar, en este caso, del objeto como la representación de la secuencia de salida que se está escribiendo. En el futuro, es posible que desee abrir dos flujos de salida al mismo tiempo, lo que no sería posible con su clase "caja de herramientas".

A veces, las clases que contienen sólo funciones miembro estáticas puede ser útil como una forma de agrupar las funciones relacionadas, pero esto es raro y a menudo significa la clase puede ser rediseñado alrededor de un objeto que contiene datos. funciones miembro estáticas pueden ser útiles como una manera de tener diferentes constructores para una clase, por ejemplo.

Otros consejos

clases y funciones estáticas sólo deben utilizarse para funciones neutros, y los cálculos. Sólo cuando sólo se necesita para obtener una respuesta para algo.

diseño de programación orientada a objetos es muy fácil cuando se piensa en lo que estás haciendo y el uso de la letra. Por ejemplo, en caso de que eres, que utilizó la palabra "myExcelWriter", que es un escritor de Excel. Por lo tanto, si es algo, es un objeto. Lo que significa que necesita una instancia.

Siempre acaba de describir lo que estás haciendo a ti mismo, si lo que está haciendo puede ser descrito por un nombre, entonces es un objeto. Si se trata de un adjetivo que es un miembro de atributo o clase. Si se trata de un verbo que es un método. Si se trata de un adverbio es un atributo o una variable pasada a la función.

clases estáticas son herramientas que contienen funciones que son independientes, y sólo hacer algunos cálculos con las variables de entrada. (Una vez más como Math, que acaba calcula 2 números)

funciones estáticas en clases son herramientas que se utilizan en los objetos de esa clase que no necesitan el estado de una instancia de trabajo. (Al igual que Int.Parse())

programación orientada a objetos es mucho más cercano a un lenguaje real de la OMI, es por eso que es más intuitiva para programar esta manera.

Las clases no hacen Tienes para representar una verdadera cosa mundo. Si el uso de ellos hace que su programa sea más fácil de entender, que lo está haciendo bien.

Dicho esto, una clase debe tener los datos y métodos. Sus clases de archivos Excel y parecen bien para mí, pero tenga cuidado de una clase que sólo tiene métodos y datos.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top