FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Trabajar con OOP - Duda
Tengo mis limitaciones en trabajar com OOP. Mi pidieron para yo hacer un teste asi:
Una calculadora con Soma,Subtracion,Multiplicacion,Division y Fatoracion. Esto no tengo problemas en hacer si fuera asi, pero hay una cosa ahora que me complico. Tengo que hacer en un form en separado, todas las classes que implementan estas operaciones y en otro form, entonces llamar la classe y hacer la calculadora funcionar. Esto yo no se hacer. Estoy estudiando en el libro de Marco Cantù, pero una orientacion de usteds, que tiene ya buena pratica, suena mejor, pues se va directo hacia el problema. La multiplicción no puede tener "*". Las operaciones no tengo duda, solamente en las classes. Gracias a todos y creo que quedo listo. |
#2
|
||||
|
||||
Hola Paulao,
"Hablas" bastante bien el español, no puedo decir lo mismo a la inversa. No se portugués por lo que si algunas palabras que digo no se me entienden avisame por favor. Entiendo tu preocupación. Y puede que te sea de ayuda. Antes que nada quisiera sacarme una pequeña duda, ¿A que te refieres con que no puedes emplear el operador *? Si me preguntas por el tema de la clases, yo sólo veo una. Una clase calculadora que posee los métodos: SetOperando1 SetOperando2 GetOperando1 GetOperando2 Aunque no se si tuviera sentido estos Get. Habría que considerar si se desea tener una calculadora "con Memoria". SetOperacion GetResultado También puede ser útil tener un Método Clear. Que vendría a ser la famosa tecla C. Volviendo al tema de la "Memoria", si se desea guardar algún valor para operar, tal vez un SetM, haciendo cierta analogía con la famosa tecla M. No se que tan elaborada debe ser la clase que realices. Si se busca recrear una calculadora de bolsillo. Me gustaría saber como estás pensando o imaginando la clase. Si tu duda pasa sobre como declarar una clase, un ejemplo es como sigue:
Un ejemplo más completo:
Y su implementación viene a ser algo así:
Pero el asunto es aquí que hacer y como implementar el "GetResultado". Una forma sencilla es esta:
Pero he aquí que otra parte del problema radica en el manejo del estado interno de una calculadora. Y he squí que dependerá de que tan viable es llevar un control y manejo "real" de una calculadora. ¿A que me refiero con esto? A que por lo general las calculadoras cuando ingresan un número o un operando se quedan en un estado de espera y pueden suceder muchas cosas aquí. Por ejemplo: Cuando uno ingresa un número (SetOperando) la calculadora se queda esperando tres posibles eventos: 1. Que se sigan ingresando un número. Con lo que dicho Operando no fue terminado. 2. Si se presiona un operador, se confirma recién que el operando ha sido ingresado correctamente. 3. Si se presiona el "igual" se obtiene el valor del operando. Y he aquí que en función del operador suministrado, la calculadora se queda esperando en otro estado: 1. Espera la orden del segundo operando. 2. Espera la orden igual. ¿Y si no se ha ingresado ningún operando, y se invoca a un operador? ¿Que sucede? Por ello te quiero preguntar Paulao, que tanto se necesita controlar. ¿Debe ser algo simple? ¿Se busca recrear una calculadora de bolsillo? No se si con esto te traigo más dudas que respuestas. Lo que pasa es que cuando se lleva un diseño POO lo primero a tener en cuenta es el grado de abstracción que se desea y fijar el límite de los requisitos. Por lo pronto sería recomendable que me explicases a que se debe que no puedes emplear * ¿Te refieres a que debes hacerlo con sumas sucesivas? Espero no haberte confundido más. Saludos, |
#3
|
||||
|
||||
Siguiendo con la explicación, El tema de usar la clase en otra unit es relativamente sencillo.
Por empezar debes declarar la Unit en la parte uses de la Unit que hace uso de la otra. Supongamos que la clase está declarada en la Unit UCalculadora y que la Unit que hace uso de UCalculadora es Unit1, entonces te queda algo así:
Después necesitas tener una variable que sea del tipo TCalculadora. Si va a ser usada en cualquier parte de Unit1, entonces la declaramos en la parte de var. Si va a ser usada sólo en algún procedimiento, o función pues allí. Supongamos (y es de esperar que sea este el caso) de que se lo usará a lo largo de la Unit1. Por tanto nos queda algo como esto:
Ahora sólo queda definir cuando se creará la instancia. Puede que sea lo más indicado en el evento onCreate del TForm. Por tanto lo hacemos allí:
Y luego, definir cuando le damos muerte, es decir liberarlo. Puede que sea al momento de cerrar o terminar la aplicación:
Y listo, ya garantizamos el tiempo de vida de dicha instancia. Ahora sólo resta usar los métodos, funciones, eventos y/o propiedades cuando sea necesario. Puede ser por ejemplo algo como esto:
¿Se entiende la idea? Saludos, |
#4
|
|||
|
|||
Hola delphius, primero gracias por tu post. Si quieres aprender portugues, ven a brasil,eheheheheheheh! Mañana es miercoles y Fluminense va a engolir el Boca,ehheheheh!!!(2X1) Bien, vamos a la classe. Esto es un teste para una empresa y yo estoy sin pratica con OOP. Es solo una calculadora simples, con 3 edits. Dos para entrada de datos y otro para resultado. Pero yo hizo un poco diferente del suyo, pero esta me lo dando erro en la construction de la classe(variavel.Create>>>>Aca estas el error). Ello me lo pedieron que yo hago una multiplicacion sin el simbolo "*", no se porque, pero esto ahora es secundario. Voy a apresentar esto hoy(Martes) por la tarde. Voy a implementar su pdigo y qualquer cosa yo posto mi duda caso tenga.
Neeeeeeennnnnnnnnnnnnsssssssssssssseeeeeeeeeeeee!!!!! |
#5
|
||||
|
||||
Cita:
Soy de River y te agradecería que le ganen! Bueno, al grano. Tendría que ver como estás implementando el constructor para saber el error. No se si mi diseño es útil, yo hice ese bosquejo inicial para entrar en calor sobre el tema... Si es de práctica puede que sirva, por ello no me atreví a meterle código sin antes saber más o menos a que iba todo esto. ¿Hoy a la tarde? Va a ser dificil que me encuentres... yo estoy desvelado y me estoy durmiendo. Quisiera dormir un poquito, la verdad que no me esperaba que fuera tan pronto tu pedido. Puede que mi diseño te sirva, y sabiendo que algunos ya están despiertos, y otros tantos están despertandose ayuda vas a encontrar. No es que no quiera ayudarte, me encantaria... pero ya me caigo del sueño. Te dejo en buenas manos. Y si ves que se puede postergar la práctica... mejor. Saludos, PD: Espero que alguien más lea esto. |
Herramientas | Buscar en Tema |
Desplegado | |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
¿Trabajar con conjunto? | Ledian_Fdez | C++ Builder | 3 | 26-05-2007 06:38:30 |
Trabajar con grids | Vlady | Conexión con bases de datos | 3 | 23-02-2007 19:25:15 |
Trabajar con Access | Jordy | Conexión con bases de datos | 0 | 27-02-2005 18:44:59 |
Trabajar con IBQuerys | StartKill | Firebird e Interbase | 3 | 29-04-2004 06:05:36 |
|