Portal    Foro    Buscar    FAQ    Registrarse    Conectarse


Publicar nuevo tema  Responder al tema 
Página 1 de 1
 
 
POO. Referencias. Reducir Código En Formulario
Autor Mensaje
Responder citando   Descargar mensaje  
Mensaje POO. Referencias. Reducir Código En Formulario 
 
Buenos días!.

No recuerdo si esto lo he preguntado alguna vez. La respuesta que recuerdo es que cada cosa en POO
debe ser independiente.

A ver si puedo abreviar el problema a estas horas de la mañana.  

Me encuentro con un duda. Tengo una clase "pelota" o "circulo", es lo más parecido.
Mi intención es dibujarla en un DrawingArea. ( Por ahora solo eso ).  Ahora bien, yo puedo:

A) Tener un formulario con un DrawingArea. Crear el objeto pelota en el formulario y usar un método del objeto pelota para que
se dibuje en el DrawingArea. Esto quiere decir que aumenta algo el código en el formulario principal.

B) Tener un formulario con un DrawingArea. Crear el objeto pelota y a este pasarle en su constructor
el DrawingArea. Y en la propia clase pelota, creo un observador para el objeto DrawingArea.

C) Tener un formulario vació y tener tanto la clase pelota y otra que sea la clase área de dibujo. Crear las distintas instancias...
No lo veo muy así ya que por ahora el área dibujo que hereda de DrawingArea no hace a penas nada nuevo
que no haga el DrawingArea.

Ejemplo Modelo A:

Formulario:

Private unapelota As Pelota

Public Sub Form_Open()
    
  unapelota = New Pelota(Color.red)
  
End


Public Sub Pizarra_Draw()

  unapelota.Dibujar

End
 


Clase Pelota:

Private hcolor As Integer
Property circulocolor As Integer

Public Sub _new(icolor As Integer)
  
  Me.circulocolor = icolor  
    
End

Public Sub Dibujar()
  
  Paint.Brush = Paint.Color(Me.circulocolor)  
  Paint.Arc(245, 100, 10)
  Paint.Fill(True)
  
End

Private Function circulocolor_Read() As Integer
  
  Return hcolor
  
End

Private Sub circulocolor_Write(Value As Integer)
  
  hcolor = Value
  
End
 



Ejemplo Modelo B:

Formulario:

Private unapelota As Pelota

Public Sub Form_Open()
    
  unapelota = New Pelota(Pizarra, Color.red)
  
End
 


Clase Pelota:

Private hcolor As Integer
Property circulocolor As Integer

Private pantalla As DrawingArea
Private observador1 As Observer

Public Sub _new(lienzo As DrawingArea, icolor As Integer)
  
  Me.circulocolor = icolor  
  
  pantalla = lienzo
  observador1 = New Observer(pantalla) As "Dibujo"
  
End

Public Sub Dibujar()
  
  Paint.Brush = Paint.Color(Me.circulocolor)  
  Paint.Arc(245, 100, 10)
  Paint.Fill(True)
  
End

Public Sub Dibujo_Draw()
  
  Dibujar
  
End

Private Function circulocolor_Read() As Integer
  
  Return hcolor
  
End

Private Sub circulocolor_Write(Value As Integer)
  
  hcolor = Value
  
End
 


El método dibujar del objeto pelota, podía llamarse mover. Cuestión de añadir un timer en el formulario principal
y ver que hace. A lo mejor no se puede y tengo que hacerlo en la clase pelota. No me he puesto aún.
A ver que hace cuando refresque el Drawingarea. Creo que ira bien.

Normalmente uso A. Pero esta vez he usado B. Es un código sencillo, puede complicarse más.
Mi duda es. ¿ Qué creéis que debería ser mejor usando POO ?.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
última edición por Shell el Lunes, 04 Diciembre 2017, 09:44; editado 2 veces 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: POO. Referencias. Reducir Código En Formulario 
 
Shell:

Yo he usado siempre el A (por ejemplo en el pintascreen), porque es más facil añadirle nuevos objetos.

Saludos
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: POO. Referencias. Reducir Código En Formulario 
 
Hola Julio.

jsbsan escribió: [Ver mensaje]

Yo he usado siempre el A (por ejemplo en el pintascreen), porque es más facil añadirle nuevos objetos.


¿ Por qué crees que con el método B resulta más difícil añadir nuevos objetos ?.  
¿ No te parece que el método B es algo más independiente ?.

Saludos
 




===================
Gambas Básico
"No es un bug, es una característica no documentada"
 
Shell - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Responder citando   Descargar mensaje  
Mensaje Re: POO. Referencias. Reducir Código En Formulario 
 
Shell:

Citar:
¿ Por qué crees que con el método B resulta más difícil añadir nuevos objetos ?.  
¿ No te parece que el método B es algo más independiente ?.

Es mas independiente con respecto a la pizarra,porque se la pasas como parametro...pero  ¿quien engloba a quien?
¿hay muchas pizarras en tu aplicación? Lo normal es que no, que solo haya una pizarra y varios objetos dentro de ella.

¿que es más logico:
a) que la pizarra se redibuje (y que ella se encargue de dibujar todos los objetos que tiene dentro)
b) o decirles a todos los objetos que se tienen que redibujar
?

Es más sencillo que el programador diga a la pizarra: redibujate pizarra
A que le diga a cada objeto pelota 1 redibujate, pelota 2 redibujate, etc...


https://universidad-de-los-andes.gi...DeUnaClase.html
"Una clase es responsable de administrar la información que hay en sus atributos. Por esta razón se debe tratar de buscar el conjunto de servicios que reflejen las operaciones típicas del elemento del mundo que la clase representa."

Tu clase principal, es la pizarra, que uno de sus atributos, será los objetos pelotas que estan dentro de ella.
La piezarra tendrá un "servicio" de "redibujar", "borrar", "eliminar elemento", etc...

Vamos, pienso yo   ... tampoco soy un especialista en el tema...
 




===================
Blog personal
Web: SoloGambas seleccion de articulos dedicados a Gambas
Visita el Curso de Gambas3 ¡¡¡Gratuito!!!
 
jsbsan - Ver perfil del usuarioEnviar mensaje privadoVisitar sitio web del usuario 
Volver arribaPágina inferior
Mostrar mensajes anteriores:    
 
OcultarTemas parecidos
Tema Autor Foro Respuestas último mensaje
No hay nuevos mensajes ¿Cómo Depurar Las Referencias Circulares? shordi General 6 Jueves, 29 Octobre 2009, 21:24 Ver último mensaje
maikl
No hay nuevos mensajes Referencias Circulares ahtonio General 2 Miercoles, 30 Diciembre 2009, 13:12 Ver último mensaje
ahtonio
No hay nuevos mensajes Crear Formulario Por Código Con Algunos O... santijav General 4 Miercoles, 27 Abril 2011, 08:28 Ver último mensaje
Shell
No hay nuevos mensajes Como Detectar Evento En Formulario Creado ... v3ctor General 3 Viernes, 27 Junio 2014, 16:18 Ver último mensaje
vuott
 

Publicar nuevo tema  Responder al tema  Página 1 de 1
 

Usuarios navegando en este tema: 0 registrados, 0 ocultos y 1 invitado
Usuarios registrados conectados: Ninguno


 
Lista de permisos
No puede crear mensajes
No puede responder temas
No puede editar sus mensajes
No puede borrar sus mensajes
No puede votar en encuestas
No puede adjuntar archivos
Puede descargar archivos
No puede publicar eventos en el calendario



  

 

cron