Propuesta para que hagan un curso virtual FW

Re: Propuesta para que hagan un curso virtual FW

Postby LuisPonce » Tue Sep 10, 2024 7:43 pm

Buenas tardes en Perú

Antonio buenas tardes

Hice el pago de 70.00 Euros por el curso, via PayPal.. seria interesante tocar el tema; de dbf a MySQL cuales son las posibilidades, y cual es la mejor opción considerando velocidad de respuesta, curva de aprendizaje, claridad del código.

Gracias

Id. de transacción
0AY08473B6327215T
Luis Ponce
User avatar
LuisPonce
 
Posts: 195
Joined: Tue Jul 01, 2008 6:34 pm
Location: PERU

Re: Propuesta para que hagan un curso virtual FW

Postby xmanuel » Tue Sep 10, 2024 8:37 pm

Introducción a la Programación Orientada a Objetos (POO) en Harbour
1. Introducción a la POO
La programación orientada a objetos (POO) es un paradigma de programación que organiza el software en torno a objetos, que representan tanto datos como comportamiento. A diferencia de la programación estructurada, donde el enfoque está en las funciones y la lógica, la POO se centra en la creación de objetos que interactúan entre sí.
Principios Clave:
1. Encapsulamiento: Es la agrupación de datos y métodos que operan sobre esos datos en una misma unidad llamada clase. Esto ayuda a mantener los detalles internos de una clase ocultos del exterior, exponiendo solo lo necesario a través de métodos públicos.
2. Abstracción: Se refiere a la capacidad de definir estructuras complejas de manera simple, ocultando los detalles no relevantes para el usuario final. Solo se expone lo que es necesario para interactuar con el objeto.
3. Herencia: Permite que una clase (subclase) herede atributos y métodos de otra clase (superclase). Esto promueve la reutilización de código.
4. Polimorfismo: Permite que diferentes clases respondan a la misma operación de diferentes maneras. Esto permite a los programadores usar una interfaz común para clases diversas.

2. POO en Harbour
Harbour es un lenguaje de programación que deriva de Clipper, con soporte para la POO. A pesar de su sintaxis ligera, Harbour ofrece un conjunto sólido de herramientas para trabajar con objetos y clases.
Definición de clases y objetos:
En Harbour, una clase se define utilizando la palabra clave CLASS y puede contener datos (atributos) y métodos (funciones).

CLASS MiClase
DATA miAtributo // Atributo o dato miembro de la clase
METHOD miMetodo // Método
ENDCLASS
Crear un objeto en Harbour:
Un objeto es una instancia de una clase. Para crear un objeto, utilizamos el método New().

oObjeto := MiClase():New()
oObjeto:miAtributo := "Hola Mundo"
oObjeto:miMetodo()
Métodos en Harbour:
Los métodos son las funciones que pertenecen a una clase. Puedes definir un método dentro de una clase como sigue:

METHOD MiClase:miMetodo()
? "Este es un método de MiClase"
RETURN

3. Demostración práctica de POO en Harbour
Encapsulamiento:
El encapsulamiento te permite agrupar los datos (atributos) y las operaciones (métodos) dentro de una clase. A continuación, un ejemplo de encapsulamiento en Harbour:

CLASS CuentaBancaria
DATA saldo

METHOD depositar( cantidad )
METHOD retirar( cantidad )
METHOD verSaldo()
ENDCLASS

METHOD depositar( cantidad ) CLASS CuentaBancaria
::saldo += cantidad
RETURN

METHOD retirar( cantidad ) CLASS CuentaBancaria
IF ::saldo >= cantidad
::saldo -= cantidad
ELSE
? "Fondos insuficientes"
ENDIF
RETURN

METHOD verSaldo() CLASS CuentaBancaria
RETURN ::saldo
Aquí, el saldo está encapsulado dentro de la clase CuentaBancaria, y solo es accesible a través de los métodos de la clase.
Herencia:
La herencia permite que una clase reutilice el código de otra. Harbour admite la herencia a través de la palabra clave INHERIT.



CLASS Vehiculo
DATA marca
METHOD arrancar()
ENDCLASS

CLASS Coche INHERIT Vehiculo
DATA modelo
METHOD tocarBocina()
ENDCLASS

METHOD arrancar() CLASS Vehiculo
? "El vehículo está arrancando..."
RETURN

METHOD tocarBocina() CLASS Coche
? "Beep beep!"
RETURN
La clase Coche hereda el método arrancar() de Vehiculo, pero también puede tener métodos y datos propios, como tocarBocina().
Polimorfismo:
El polimorfismo permite que diferentes clases respondan de manera distinta a la misma llamada de método. Un ejemplo sería el método arrancar() en diferentes tipos de vehículos.

CLASS Motocicleta INHERIT Vehiculo
METHOD arrancar()
ENDCLASS

METHOD arrancar() CLASS Motocicleta
? "La motocicleta está arrancando…"
RETURN
Ahora, el método arrancar() se comporta de forma distinta en Motocicleta que en Coche, aunque ambos heredan de Vehiculo.

4. Patrones de Diseño Aplicables en Harbour
Singleton:
El patrón Singleton garantiza que una clase tenga una sola instancia. Esto es útil cuando solo necesitas un único objeto para gestionar un recurso global.

CLASS Singleton
CLASSDATA oInstance
METHOD getInstance()
ENDCLASS

METHOD getInstance() CLASS Singleton
IF ::oInstance == NIL
::oInstance := Singleton():New()
ENDIF
RETURN ::oInstance
Este ejemplo asegura que solo exista una instancia de la clase Singleton. Si se llama a getInstance() varias veces, siempre se devolverá la misma instancia.

5. Ventajas de Aplicar POO en Harbour
Aplicar los principios de la POO en Harbour tiene varios beneficios:
• Mantenibilidad: Al encapsular datos y lógica en clases, es más fácil actualizar y mantener el código.
• Escalabilidad: A través de la herencia y el polimorfismo, puedes agregar nuevas funcionalidades sin modificar el código existente.
• Reutilización: La herencia te permite reutilizar código entre clases, lo que reduce la duplicación y hace tu código más eficiente.

6. Otros conceptos
- Interfaces y Clases Abstractas en POO
- Los métodos CONSTRUCTOR y DESTRUCTOR
- Estado de un objeto
- Relaciones
Tipo de Relación Definición Ejemplo Fortalezas
Asociación Relación general entre dos clases que colaboran entre sí. Un profesor enseña una asignatura. Las clases pueden existir independientemente.
Composición Relación fuerte: un objeto contiene a otros objetos, que no tienen sentido sin él. Un coche contiene un motor. Los objetos componentes dependen del contenedor para existir.
Agregación Relación débil: un objeto contiene a otros, pero los componentes pueden existir independientemente. Una universidad tiene estudiantes. Los objetos componentes pueden existir fuera de la clase contenedora.


Buenas Prácticas en POO
• Coherencia en la abstracción: Asegúrate de que cada clase tenga una única responsabilidad (principio de responsabilidad única).
• Minimizar la herencia: Prefiere la composición sobre la herencia cuando sea posible. La composición te permite crear sistemas más flexibles.
• Evitar clases excesivamente grandes: Si una clase tiene demasiados métodos, es probable que esté haciendo más de lo que debería. Divide responsabilidades en clases más pequeñas.
______________________________________________________________________________
Sevilla - Andalucía
xmanuel
 
Posts: 760
Joined: Sun Jun 15, 2008 7:47 pm
Location: Sevilla

Re: Propuesta para que hagan un curso virtual FW

Postby xmanuel » Tue Sep 10, 2024 8:39 pm

Clases en Harbour – Diseño, Modificación y Mejores Prácticas
Índice
1. Introducción
2. Diseño de Clases
◦ Definición de Clases
◦ Principios de Diseño
◦ Relaciones entre Clases
3. Modificación de Clases
◦ Añadir Métodos y Propiedades
◦ Uso de la Herencia
4. Diseño Eficaz de Clases
◦ Simplicidad y Modularidad
◦ Polimorfismo y Abstracción
◦ Buenas Prácticas
5. Conclusión

1. Introducción
Este manual tiene como objetivo enseñar cómo diseñar, modificar y mejorar el diseño de clases en el lenguaje de programación Harbour. A través de ejemplos prácticos, aprenderás a aplicar principios fundamentales de la programación orientada a objetos (POO) para crear sistemas más robustos, reutilizables y fáciles de mantener.

2. Diseño de Clases
Definición de Clases
Una clase en Harbour es una plantilla o estructura que define un conjunto de datos (atributos) y funciones (métodos) que los objetos basados en esa clase pueden tener. Para crear una clase, utilizamos la palabra clave CLASS. Veamos un ejemplo sencillo:

CLASS Coche
DATA marca
DATA modelo
DATA año

METHOD arrancar()
ENDCLASS

METHOD arrancar() CLASS Coche
? "El coche ha arrancado."
RETURN
Este código define una clase Coche con tres datos (marca, modelo, y año) y un método arrancar().
Principios de Diseño
Cohesión
Las clases deben tener una única responsabilidad. Esto significa que una clase debe estar enfocada en una sola tarea. Por ejemplo, una clase Coche debería encargarse solo de aspectos relacionados con un coche, no con la gestión de personas o ventas.
Encapsulamiento
El encapsulamiento consiste en ocultar los detalles internos de una clase y exponer solo lo que es necesario. Por ejemplo, los datos deben ser accesibles solo mediante métodos, en lugar de permitir el acceso directo.


Relaciones entre Clases
Composición
Es cuando una clase contiene otras clases y estas últimas no pueden existir independientemente. Un coche no tiene sentido sin un motor.

CLASS Motor
DATA potencia

METHOD encender()
ENDCLASS

CLASS Coche
DATA oMotor

METHOD arrancar()
ENDCLASS

METHOD arrancar() CLASS Coche
::oMotor:encender()
RETURN

METHOD encender() CLASS Motor
? "El motor ha sido encendido."
RETURN
Agregación
Es una relación más débil. Un curso puede tener estudiantes, pero los estudiantes pueden existir sin el curso.

CLASS Curso
DATA estudiantes

METHOD agregarEstudiante( estudiante )
ENDCLASS

METHOD agregarEstudiante( estudiante ) CLASS Curso
AADD( ::estudiantes, estudiante )
RETURN

3. Modificación de Clases
Añadir Métodos y Propiedades
Modificar una clase en Harbour es fácil. Se pueden añadir métodos o propiedades sin tener que cambiar el diseño original. Por ejemplo, si queremos añadir un método para detener un coche:

CLASS Coche
METHOD detener()
ENDCLASS

METHOD detener() CLASS Coche
? "El coche se ha detenido."
RETURN
Uso de la Herencia
La herencia permite que una clase herede las propiedades y métodos de otra. En Harbour, usamos INHERIT para heredar de una clase base.

CLASS Vehiculo
DATA marca
DATA modelo

METHOD moverse()
ENDCLASS

CLASS Coche INHERIT Vehiculo
METHOD arrancar()
ENDCLASS

METHOD moverse() CLASS Vehiculo
? "El vehículo se está moviendo."
RETURN

METHOD arrancar() CLASS Coche
? "El coche ha arrancado."
RETURN
Aquí, Coche hereda de Vehiculo, lo que significa que Coche tiene acceso a los métodos y datos definidos en Vehiculo.

4. Diseño Eficaz de Clases
Simplicidad y Modularidad
Es fundamental que las clases sean simples y modulares. Cada clase debe tener una única responsabilidad y debe poder ser reutilizada en otros contextos. Esto facilita el mantenimiento y mejora la legibilidad del código.
Polimorfismo y Abstracción
El polimorfismo permite que diferentes clases implementen el mismo método de maneras diferentes. Esto permite que el código sea más flexible y extensible.
Por ejemplo, podrías tener una clase Trabajador con un método calcularSalario(), que es implementado de manera diferente en las clases Empleado y Consultor:

CLASS Trabajador
METHOD calcularSalario()
ENDCLASS

CLASS Empleado INHERIT Trabajador
METHOD calcularSalario()
ENDCLASS

METHOD calcularSalario() CLASS Empleado
? "Salario basado en horas trabajadas."
RETURN

CLASS Consultor INHERIT Trabajador
METHOD calcularSalario()
ENDCLASS

METHOD calcularSalario() CLASS Consultor
? "Salario basado en proyecto completado."
RETURN
Buenas Prácticas
1. Uso adecuado de visibilidad: Usa METHOD para definir métodos públicos, y encapsula los detalles de implementación internos.
2. Uso de nombres descriptivos: Los nombres de clases, métodos y propiedades deben ser claros y describir su propósito.
3. Reutilización de código: Aprovecha la herencia y la composición para evitar duplicar código.

5. Conclusión
Este manual ha cubierto los aspectos fundamentales del diseño, modificación y creación de clases eficaces en Harbour. Aplicando estos principios, podrás desarrollar software más flexible, reutilizable y fácil de mantener. Recuerda siempre enfocarte en la simplicidad, el encapsulamiento y la reutilización del código.
______________________________________________________________________________
Sevilla - Andalucía
xmanuel
 
Posts: 760
Joined: Sun Jun 15, 2008 7:47 pm
Location: Sevilla

Re: Propuesta para que hagan un curso virtual FW

Postby xmanuel » Tue Sep 10, 2024 8:41 pm

Eso es el resumen de lo que hablé en la webinar
______________________________________________________________________________
Sevilla - Andalucía
xmanuel
 
Posts: 760
Joined: Sun Jun 15, 2008 7:47 pm
Location: Sevilla

Re: Propuesta para que hagan un curso virtual FW

Postby carito » Tue Sep 10, 2024 8:47 pm

Muchas gracias , muy clara e importante tu exposicion , saludos. :)

Carito
carito
 
Posts: 82
Joined: Sat Dec 03, 2016 2:49 pm

Re: Propuesta para que hagan un curso virtual FW

Postby Carles » Wed Sep 11, 2024 6:49 am

Bon dia a tots ! :D

Gracias a todos por la asistencia ayer al webinar. Siento los problemillas iniciales con el micro pero esto tiene el directo. Al final creo que lo pudimos salvar.

Se que quizas se hizo corto, pero es lo que tiene un webinar, que es una pincelada rápida por encima de los temas pero al final los pudimos ver y ahora conoceis diferentes caminos que podeis usar y que os pueden ayudar con vuestros objetivos.

He puesto todos los enlaces que vimos ayer en el siguiente hilo y cualquier duda la podemos hablar no mezclar:

viewtopic.php?f=46&t=44847&start=0

Saludos.
C.
Salutacions, saludos, regards

"...programar es fácil, hacer programas es difícil..."

UT Page -> https://carles9000.github.io/
Forum UT -> https://discord.gg/bq8a9yGMWh
Skype -> https://join.skype.com/cnzQg3Kr1dnk
User avatar
Carles
 
Posts: 1123
Joined: Fri Feb 10, 2006 2:34 pm
Location: Barcelona

Re: Propuesta para que hagan un curso virtual FW

Postby acuellar » Wed Sep 11, 2024 3:11 pm

Estimado Antonio

Por favor pasar el link de acceso
Saludos,

Adhemar C.
User avatar
acuellar
 
Posts: 1630
Joined: Tue Oct 28, 2008 6:26 pm
Location: Santa Cruz-Bolivia

Re: Propuesta para que hagan un curso virtual FW

Postby Antonio Linares » Wed Sep 11, 2024 5:35 pm

regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41858
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Propuesta para que hagan un curso virtual FW

Postby carito » Thu Sep 12, 2024 1:13 am

Hola Antonio:

Podrias por favor , poner el link del ejemplo del uso de chartGTP con FWH y tb el del otro proveedor gratuito.

Lo busque aqui en el foro, pero no logro ubicarlo.

Muy interesante y con muchas posibilidades, lo que nos explicaste, muchas gracias por abrirnos nuestros ojos.

Otra consulta el fin de semana, abra alguna reunion por skype ?

Quedo a la espera,
Carito
carito
 
Posts: 82
Joined: Sat Dec 03, 2016 2:49 pm

Re: Propuesta para que hagan un curso virtual FW

Postby Antonio Linares » Thu Sep 12, 2024 4:44 am

Estimado Carito,

Aqui lo tienes:
viewtopic.php?f=3&t=44848

Ya que afortunadamente los videos del webinar se han podido grabar correctamente, rogamos a los asistentes al segundo grupo que los visualicen.
Ha sido un gran esfuerzo por parte de todos y es lo más conveniente.

Haremos mas sesiones por skype, ahora toca descansar un poco del esfuerzo realizado :-)
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41858
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Propuesta para que hagan un curso virtual FW

Postby VictorCasajuana » Thu Sep 12, 2024 10:11 am

Antonio Linares wrote:Haremos mas sesiones por skype, ahora toca descansar un poco del esfuerzo realizado :-)


uoooo!!! buena noticia. Gracias maestro!!!
--------
¿ Y porque no ?
¿ And why not ?
User avatar
VictorCasajuana
 
Posts: 219
Joined: Wed Mar 28, 2018 4:38 pm
Location: Vinaròs

Re: Propuesta para que hagan un curso virtual FW

Postby Alberto Mosquera » Thu Sep 12, 2024 12:54 pm

Hola Antonio.
Me acabo de enterar lo del curso virtual FW, vi que van a hacer un segundo grupo
a partir del dia 13 de setiembre y quería preguntar si todavía estoy a tiempo
de enviar el pago de los 70 euros de la inscripción así puedo participar y también recibir
la actualización a la ultima versión de FiveWin? Muchas gracias.
Alberto Mosquera
 
Posts: 2
Joined: Thu Aug 06, 2015 11:33 pm
Location: Argentina

Re: Propuesta para que hagan un curso virtual FW

Postby Antonio Linares » Thu Sep 12, 2024 1:05 pm

Estimado Alberto,

Si, aún estas a tiempo.

Recibirias FWH 32 y 64 bits y los videos del webinar.

gracias!
regards, saludos

Antonio Linares
www.fivetechsoft.com
User avatar
Antonio Linares
Site Admin
 
Posts: 41858
Joined: Thu Oct 06, 2005 5:47 pm
Location: Spain

Re: Propuesta para que hagan un curso virtual FW

Postby carito » Thu Sep 12, 2024 6:16 pm

Estimado Antonio,
muchas gracias por el link :D y te entiendo, estos cursos demandan mucho trabajo y esfuerzo, te agradecemos tu buena
acogida y atencion en lo realizado , espero que muy pronto nos reunamos todos nuevamente.
Saludos ,
Carito
carito
 
Posts: 82
Joined: Sat Dec 03, 2016 2:49 pm

Re: Propuesta para que hagan un curso virtual FW

Postby jvtecheto » Fri Sep 13, 2024 12:39 pm

Hola amigos, aunque tarde me he inscrito al curso, le he mandado un wastapp a Antonio. Mis datos
Jose Vte. Cheto Ortiz. España.

A ver si me puedo acceder aunque sea un rato.

Un abrazo a todos.

Jose Vte.

Enviado desde mi POCOPHONE F1 mediante Tapatalk
Fwh 19.06 32 bits + Harbour 3.2dev(r2104281802) + Borland 7.4 + FivEdit
User avatar
jvtecheto
 
Posts: 584
Joined: Mon Mar 04, 2013 4:32 pm
Location: Spain

PreviousNext

Return to FiveWin para Harbour/xHarbour

Who is online

Users browsing this forum: No registered users and 52 guests