Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 11-03-2010
ioco ioco is offline
Miembro
 
Registrado: ene 2010
Posts: 42
Poder: 0
ioco Va por buen camino
lio con una asignación

Buenos días ^^

Hace unos días hice la típica unit de principiante con un record y una serie de funciones y procedures ya que la POO aún me da algo de respeto y de momento solo me aclaré de forma elemental con el uso de objetos ya creados.

La cuestión es que me he decidido a convertir esa unit en una unit para almacenar un objeto (hace semanas lo intenté y acabé desistiendo y opté por aplazarlo para seguir leyendo y practicando las bases.)

Así que aquí les traigo el objeto en si

Código Delphi [-]
Type
      TComplejo = class
                Re,
                Img,
                Modulo,
                ArgumentoGrados,
                ArgumentoRadianes:Extended;
                N:LongInt; //Índice para la raíz n-esima
                SolucionesRaizN:TFPObjectList;
                {Función de construcción de un complejo (todo = 0)}
                Constructor NuevoNumero;
                {Procedimiento para rellenar la parte de coordenadas polares de la variable}
                Procedure CalcularPolar;
                {Procedimiento para rellenar la parte de coordenadas rectangulares de la variable}
                Procedure CalcularRectangular;
                {Función para sumar dos complejos}
                Function Suma(a,b:TComplejo);
                {Función para restar dos complejos}
                Function Resta(a,b:TComplejo);
                {Función para multiplicar dos complejos}
                Function Multiplica(a,b:TComplejo);
                {Función para dividir dos complejos}
                Function Divide(a,b:TComplejo);
                {Función para obtener el logaritmo natural de un complejo}
                Function Ln(a:TComplejo); overload;
                {Función para elevar un complejo a otro complejo}
                Function Eleva(a,b:TComplejo);
                {Función para sacar la raíz n-ésima de un complejo}
                Function RaizN(a:TComplejo;b:LongInt);

Suponiendo que el código completo de la unit esté correcto (no me ha dado ningun error de compilación) y esperando que no haya sorpresas (que las habrá seguro xD) cuando empiece a llamar al objeto por primera vez desde un form, les pego aquí la parte que me dio la duda (pongo la function completa para contextualizar, el problema está señalado con '//' espero se entienda bien :S):

Código Delphi [-]
      Function TComplejo.RaizN;
               Var
                  i:LongInt;
                  z:=TComplejo;
               Begin
                    {Si el índice de la raíz es 0, entonces damos como resultado un complejo 0}
                    If N<0 then
                       Begin
                            z:=TComplejo.NuevoNumero;
                            ListaSoluciones:=TFPObjectList.Create;
                            ListaSoluciones.Add(z);
                            z.free;
                       end
                    {Si el índice de la raíz es 1, entonces damos como resultado el mismo complejo}
                    else If N=1 then
                         Begin
                              z:=TComplejo.NuevoNumero;
                              z:= ;//¿z:=self? para asignar a los atributos de z los valores de los de
                                  //la instancia de TComplejo con la que estemos trabajando
                              ListaSoluciones:=TFPObjectList.Create;
                              ListaSoluciones.Add(z);
                              z.free;
                         end
                    {Si el índice de la raíz es >1, entonces damos las N soluciones}
                    else
                        ListaSoluciones:=TFPObjectList.Create;
                        For i:=1 to N do
                            Begin
                                 z:=TComplejo.NuevoNumero;
                                 {Cálculo de la raíz en formato polar}
                                 z.Modulo:=Power(Modulo,1/N);
                                 z.ArgumentoRadianes:=(2*Pi*(i))/N;
                                 {Conversión de radianes a grados}
                                 z.ArgumentoGrados:=RadToDeg(z.ArgumentoRadianes);
                                 {Modificación del formato rectangular}
                                 CalcularRectangular(z);
                                 {Añadir solución a la lista de soluciones}
                                 ListaSoluciones.Add(z);
                                 z.free;
                            end;
               end;

Un saludo y mil gracias por su tiempo

Última edición por ioco fecha: 11-03-2010 a las 08:31:33.
Responder Con Cita
 



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Error de asignacion de parametros. BuenaOnda MS SQL Server 1 10-04-2017 13:55:29
Asignacion Automatica frholguin Varios 9 19-10-2006 10:24:54
Asignación dinámica de propiedades Mariana OOP 3 14-11-2005 21:44:22
Asignacion de campos jdangosto OOP 1 05-08-2005 10:41:11
Asignación IP juanchi Internet 1 24-09-2003 19:07:05


La franja horaria es GMT +2. Ahora son las 07:06:47.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi