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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-06-2015
Lechu Lechu is offline
Registrado
NULL
 
Registrado: ene 2013
Posts: 8
Poder: 0
Lechu Va por buen camino
Relación entre objetos y bases de datos relacionales

Hola. Muy buen día a todos.

Quiero hacer una consulta que quizás resulte algo compleja y difícil de contestar por este medio. Pero bueno, al menos, es posible que me puedan orientar un poco. Les cuento:

Mi duda, básicamente, radica en lo siguiente: ¿cuál es la forma "óptima" o más adecuada de usar la programación orientada a objetos con una base de datos relacional como SQL Server?

Sucede lo siguiente: estoy casi a punto de terminar mis estudios superiores y, para mis trabajos, siempre usé la programación estructurada con bases de datos hechas en SQL Server. Hasta ahí, ningún problema. El tema surge cuando tengo que hacer un trabajo para la materia POO (programación orientada a objetos).

Voy a poner un ejemplo de mi duda/problema:

Tengo dos clases asociadas. Una es TProducto y la otra es TProveedor. Todo producto tiene un único proveedor asociado. Supongamos que estas son mis clases (todo esto es un ejemplo):

Código Delphi [-]
TProveedor = Class
Private
  ID: Integer;
  Descripcion: String[50];
Public
  Constructor CrearProveedor();
  Procedure EstablecerID(I: Integer);
  Procedure EstablecerDescripcion(D: String);
  Function ObtenerID(): Integer;
  Function ObtenerDescripcion(): String;
End;

TProducto = Class
Private
  ID: Integer;
  Descripcion: String[50];
  Proveedor: TProveedor;
Public
  Constructor CrearProducto();
  Procedure EstablecerID(I: Integer);
  Procedure EstablecerDescripcion(D: String);
  Procedure EstablecerProveedor(P: TProveedor);
  Function ObtenerID(): Integer;
  Function ObtenerDescripcion(): String;
  Function ObtenerProveedor(): TProveedor;
End;

Ahora bien. Durante mis estudios, se me enseñó a guardar todo esto en un arreglo (clase TArreglo con todos los métodos necesarios de librería operacional para poder llevar a cabo las operaciones básicas). Acá dejo la clase TArreglo para que se den una idea.

Código Delphi [-]
Const

Maximo = 1000;

Type

TIndice = 1..Maximo;
TPosicion = 0..Maximo;
TElemento = TProducto;

TArreglo = Class
Private
  Conjunto: Array[TIndice] of TElemento;
  Ultimo: TPosicion;
Public
  Constructor CrearEstructuraVacia();
  Procedure Insertar(Elemento: TElemento);
  Procedure Eliminar(Posicion: TIndice);
  Function Buscar(X: TClave): TPosicion;
  Function VectorLleno: Boolean;
  Function VectorVacio: Boolean;
  Function ObtenerUltimo: TPosicion;
  Function ObtenerElemento(Posicion: TPosicion): TElemento;
End;

El problema de esto es que todo se almacenaba temporalmente en memoria, por lo que, al salir del programa, se perdían todos los datos.
Ahora, después de tanta introducción, voy al punto: si yo hago una base de datos en SQL Server estaría integrada por dos tablas, por supuesto: Productos y Proveedores. Ambas serían algo así:

Productos = (Prod_ID, Prod_Descripcion, Prod_ProveedorID)
Proveedores = (Prov_ID, Prov_Descripcion)

El campo Prod_ProveedorID es una clave foránea que apunta hacia la clave Prov_ID de la tabla Proveedores. Bien. El problema es que yo, viendo desde el punto de vista de mis objetos, una instancia de la clase PRODUCTO no tiene un simple entero que apunta a otra instancia de PROVEEDORES sino que el producto tiene "dentro" una instancia proveedor. A lo que voy: no son dos cosas "separadas" sino que son una está dentro de la otra (producto tiene un atributo de tipo TProveedor). Eso, trabajándolo en memoria con el arreglo se podía hacer sin problemas; pero, con la base de datos, supongo que debo dar un paso extra.
¿Cuál sería la mejor forma de manejar esto?

Gracias de antemano y espero haberme explicado bien.

Última edición por nlsgarcia fecha: 16-06-2015 a las 22:17:08. Razón: Sintaxis Delphi
Responder Con Cita
  #2  
Antiguo 16-06-2015
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Felicitaciones, te has topado con uno de los temas mas interesantes de la OO.

En resumen?

La OO y el modelo relacional SON INCOMPATIBLES y por lo tanto NO SE PUEDE RECONCILIAR DE FORMA OPTIMA.

Esto se conoce como el "Impedance Mismatch"

https://en.wikipedia.org/wiki/Object...dance_mismatch

O como "El vietnam de la computacion"

http://blogs.tedneward.com/2006/06/2...r+Science.aspx

Hay 3 modelos dominantes en la programacion:

- Orientado a Objetos
- Funcional
- Relacional

Y todos tienen mismatch entre si! Osea, que en lo "facil" no se ve el problema pero en la medida que empiezas a los detalles ves que hay cosas que en un modelo son mas faciles que en el otro. Eso se llama "El problema de la expresividad":

https://en.wikipedia.org/wiki/Expression_problem
------

Importante: No hay forma de hacer un ORM que sea realmente bueno y compatible con un RDBMS, solo de forma "superficial". Cualquiera que crea o diga lo contrario lo hace en una posicion de ignorancia.

---
La forma de resolverlo? Es NO LUCHAR CONTRA EL.

Usa OO para resolver problemas OO, Funcional para funcional y relacional para relacional. Es lo mas simple, facil y descomplicado (que se traduce en terminos practicos: "Chico, tienes SQL, usalo!")
__________________
El malabarista.
Responder Con Cita
  #3  
Antiguo 17-06-2015
giulichajari giulichajari is offline
Miembro
 
Registrado: nov 2012
Posts: 306
Poder: 12
giulichajari Va por buen camino
Bueno... en todo sistema existen especificaciones.

Por un lado tienes el modelo relacional de los datos, aunque tambien existen bd orientadas a objetos.
Y la programacion en algun lenguaje es para los procesos, y en esto la orientacion a objetos es superior y provee ventajas como la rusabilidad extensibilidad, etc...
Y los objetos tambien quedan en la memoria mientras la aplicacion funciona luego se pierden.
Este tema me hace acordar a un curso de PHP, por el uso del Active Record, es un patrón de diseño que define una forma de acceder a los datos de una base de datos relacional y convertir las filas de una tabla en objetos.
Y para la consulta final debes acceder a los atributos de los objetos en cuestion, y con los getters y setters podras manejar consultas.
Saludos
Responder Con Cita
  #4  
Antiguo 17-06-2015
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Si estás estudiando una carrera, y más si estás por recibirte, me extraña que no hayas siquiera haber escuchado al voleo lo que se conoce como framework de persistencia y el mapeo objeto-relacional (conocido más en la jerga como Mapping O-R o también como ORM). No te pido que te lo sepas como el padre nuestro, puesto que por lo general no está incorporado en los programas de estudio. Pero de forma burda y elemental si tienes que haberte sido dado y mencionado. El primer indicio de esto tiene que haberte llegado cuando se te dieron el concepto de diseño en 3 capas: interfaz-lógica-datos. El 2do indicio cuando te empiezan a martillar con POO y patrones y descubres la diferencia entre un objeto y la descripción del mismo. El 3er indicio, a puro golpe, llega repasas que la Cohesión te dice que no es sano mezclar en las clases potenciales de un modelo de dominio métodos dedicados a la capa de dominio con la de presentación o la base...
Y listo, así es como uno abre los ojitos y se da con que la teoría que tenía tiene que volver a ser leída otra vez... y así hasta que entrena la cabecita a encontrar la teoría de persistencia.

Allí tienes tu respuesta.

Para adentrarte recomiendo la lectura de los últimos capítulos de UML y Patrones de Craig Larman. Si no me falla la memoria desde el capítulo 33, de la 4ta edición (si, creo que era la 4ta la que tengo), expone de manera introductoria y superficial los conceptos más esenciales que dan forma luego a que junto con la práctica de otros patrones se llegue a un tener un framework.

Aviso que esto no es fácil de tragar. No es algo que se entienda ni con las primeras 20 leídas.

Recuerdo hace ya un buen tiempo que había llegado a unos muy buenos artículos que exponía desde algo más teórico sobre Maping O-R, y fue citado aquí en los foros. El compañero Neftali había dado ciertas orientaciones en su momento. Ahora no tengo las fuentes a mano. Date una búsquedas.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #5  
Antiguo 17-06-2015
Avatar de AgustinOrtu
[AgustinOrtu] AgustinOrtu is offline
Miembro Premium
NULL
 
Registrado: ago 2013
Ubicación: Argentina
Posts: 1.858
Poder: 15
AgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en brutoAgustinOrtu Es un diamante en bruto
Necesitas agregar mas clases a tu dominio, clases encargadas de mapear objetos desde la base de datos a tu programa.

Yo suelo crear un DataModule con 1 componente conexion, y luego objetos publicos que se definen en otras units

un ejemplo de un DataModule:

Código Delphi [-]
unit Data.DataModule;

uses
  ...
  Data.Managers.Socios // --> unit en donde esta definida una clase que me permite guardar, leer, borrar, etc "Socios"!
  ...

    TDM = class(TDataModule)
        FDGUIxWaitCursor1: TFDGUIxWaitCursor;
        FDPhysFBDriverLink1: TFDPhysFBDriverLink;
        Connection: TFDConnection;
        procedure DataModuleCreate(Sender: TObject);
        procedure DataModuleDestroy(Sender: TObject);
        procedure ConnectionAfterConnect(Sender: TObject);
        procedure ConnectionBeforeConnect(Sender: TObject);
    private
        { Private declarations }
        procedure InitManagers;
        procedure FreeManagers;
    public
        { Public declarations }
        Socios: TSociosMgr;  --> Aca tenemos la instancia publica a la que hay que pedirle que opere con los socios
    end;

procedure TDM.ConnectionAfterConnect(Sender: TObject);
begin
    InitManagers;
end;

procedure TDM.DataModuleCreate(Sender: TObject);
begin
    Connection.Connected := True;
end;

procedure TDM.DataModuleDestroy(Sender: TObject);
begin
    FreeManagers;
end;


procedure TDM.FreeManagers;
begin
  if Assigned(Socios) then
    Socios.Free;
end;

procedure TDM.InitManagers;
begin
    Socios := TSociosMgr.Create(Connection); // --> Le pasamos la conexion para que pueda acceder la BD
end;

y un poco de la clase TSociosMgr..

Código Delphi [-]
    { Clase encargada de la comunicacion con la base de datos. Implementa operaciones CRUD }
    TSociosMgr = class(TBaseMgr)  --> TBaseMgr es una clase abstracta que define algunas cosas
    public
        constructor Create(Connection: TFDConnection);
        function Get(const Id: int64): TSocio; overload;
        function Get(const Apellido, Nombre: string): TSocio; overload;
        function Delete(const Id: int64): boolean;
        function Search(const FParams: TSocioParams): TSocioData; 
//--> TSocioParams es un tipo record que contiene los parametros de busqueda, 
// a partir de esto armo una sentencia SQL
        function GetAll: TSocioData;
// --> TSocioData es otra clase especial.. mas abajo la muestro.
// Basicamente ADAPTA el resultado de una consulta SQL a: TDataSet, TDataSource, 
'' TList, < T > (donde < T > en este caso particular es TSocio!)
    end;

Aca esta TSocioData

Código Delphi [-]
    { Contiene un TDataSet con el resltado de un query. Puede representar la informacion como TDataSet, TDataSource
      o TList }
    TSocioData= class(TBaseData) --> Otra clase abstracta mas 
    public
        function AsList: TSocioList; --> TObjectList< TSocio > con algunos agregados: Comparadores por ej
        function RowToObj< T >: TSocio;
// --> Soy muy original con los nombres lo se.
// RowToObj "transforma" una fila del query en un TSocio, de alli su nombre
    end;

TSocioData, al descender de TBaseData, tiene una variable de tipo TDataSet (privada)

Entonces se puede implementar algo como esto:

Código Delphi [-]
function TSocioData.AsList: TSocioList;
begin
   // le paso una funcion por parametro que le dice "como" hacer para adaptar una fila del dataset a un TSocio!
    Result := TSocioList(inherited AsList< TSocio >(RowToObj< TSocio >));
    // al invocar a inherited AsList, se ejecuta un metodo de TBaseData, el cual hace algo masomenos asi
   // while not(YourDataSet.Eof) do
   // begin
  //   Lista.Add(RowToObj< T >);
  //   Next;
 // end;
end;

function TSocioData.RowToObj< T >: TSocio;
begin
    Result := TSocio.Create;
    with YourDataSet do
    begin
        Result.Id := FieldByName('Id').AsLargeInt;
        Result.IdRubro := FieldByName('IdRubro').AsInteger;
        Result.Apellido := FieldByName('Apellido').AsString;
        Result.Nombre := FieldByName('Nombre').AsString;
        Result.Mail := FieldByName('Mail').AsString;
        Result.FechaNac := FieldByName('FechaNac').AsDateTime;
        Result.FechaAlta := FieldByName('FechaAlta').AsDateTime;
        Result.Sexo.FromInteger(FieldByName('Sexo').AsInteger);
        Result.Observaciones := FieldByName('Observaciones').AsString;
        Result.Imagen := TImageLoader.LoadFromField(FieldByName('Imagen'));
    end;
end;

Se que es tedioso y largo, y eso que solo puse "pedazos sueltos" porque meter todas las clases involucradas en un post es una locura. Pero masomenos te das una idea

La mejor forma que yo encontre de que los objetos puedan colaborar entre si, es esta: Tenes que tener las claves foraneas en tu objeto, y cuando necesitas mas informacion para trabajar, se la pedis a la clase encargada de la persistencia!

En tu caso:

Código Delphi [-]

implementation

uses
  Data.DataModule, // --> Para poder acceder al TProveedorMgr
  Entities.Proveedor; // --> Aca estaria definido TProveedor

procedure TProducto.MostrarNombreDeProveedor;
var
  AProveedor: TProveedor;
begin
  AProveedor := DataModule.Proveedores.Get(IdProveedor); // --> Clave foranea en tu objeto TProducto!
  try
    ShowMessage(AProveedor.Nombre);
    ...
  finally
    AProveedor.Free;
  end;
end;

Como ya te dijeron por arriba esto lleva TIEMPO, y cuesta digerirlo. Yo aun sigo aprendiendo, experimentando y mejorando, aun me falta muchisimo para dominarlo bien, pero es una forma de programar que realmente me apasiona

Definitivamente deberias pegarle una ojeada a la sesion del CodeRage7 de Malcom Groves, en donde muestra un ejemplo de implementacion MVVM en Delphi

http://www.malcolmgroves.com/blog/?p=1340


-----

OFFTOPIC: Por cierto, los a genericos hay que agregarles espacio o no salen en el post!

Última edición por AgustinOrtu fecha: 17-06-2015 a las 06:03:09. Razón: Para mejor visualizacion
Responder Con Cita
  #6  
Antiguo 17-06-2015
Avatar de Al González
[Al González] Al González is offline
In .pas since 1991
 
Registrado: may 2003
Posts: 5.604
Poder: 29
Al González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en brutoAl González Es un diamante en bruto
Cita:
Empezado por Lechu Ver Mensaje
[...] ¿cuál es la forma "óptima" o más adecuada de usar la programación orientada a objetos con una base de datos relacional [...]?
Enhorabuena, has llegado a tercera base. Esa gran pregunta ha dado pie a cientos de debates, miles de horas de investigación y millones de líneas de código para la creación de numerosos marcos de persistencia, algunos famosos y otros totalmente desconocidos. Te recomiendo que tomes muy en cuenta la respuesta dada arriba por mamcx, además de estos enlaces:

Definición de Mapeo objeto-relacional: https://es.wikipedia.org/wiki/Mapeo_objeto-relacional

Un ORM para Delphi: https://code.google.com/p/delphi-orm/

Personalmente no he usado a profundidad otro ORM que el que yo mismo me programé hace algunos años. Es uno de tantos ORMs superficiales que hay, pero me resultó muy útil para desarrollar cierto proyecto. Ahora mi intención es pulirlo e integrarlo, como ya es costumbre, en GH Freebrary, para que la comunidad pueda sacar mayor provecho de él.

Hay mucho por andar, Lechu, pero será un camino que recompensa. Da gusto ver programadores que se interesan por estudiar y crear, no sólo por usar.

Saludos.

Al González.
Responder Con Cita
  #7  
Antiguo 17-06-2015
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
Yo he usado varios ORM, y al final lo mas simple es usar SQL/DataSets/LINQ.

En caso de Delphi, este tiene una clase que es la mas adecuada que son los TDataSet y en especial los TClientDataset.

De ahi, hacer clases (si es del caso) que se encarguen de encapsular la logica, y hacer mapeo 1:1 entre tablas/clases, pero no intentar hacerlo todo con el ORM.

Osea: Una tabla es mejor tratarla como un Array. No verlo como "una clase" si no como "un valor multiple" ya que eso es lo que es. Y asi como es obvio que usas un Array sin mapearlo a clases, de igual manera es mas natural usar una tabla sin mapearla.
__________________
El malabarista.
Responder Con Cita
  #8  
Antiguo 17-06-2015
Lechu Lechu is offline
Registrado
NULL
 
Registrado: ene 2013
Posts: 8
Poder: 0
Lechu Va por buen camino
Buenas tardes a todos.

Primero que nada, quiero agradecerles por tomarse el tiempo de leer mi duda/problemática y por brindarme sus respuestas.
Por otro lado, comentarles que me siento un poco "devastado", porque me parece increíble que, estando a punto de recibirme (solo me faltan rendir 6 finales, de los cuáles muchos son materias de Matemática, que poco tienen que ver con programación), no haya escuchado nada sobre esto que me plantean ustedes.
Evidentemente, hay algo mal en el plan de estudios para mi carrera (que, debo acotar, es un terciario y no una carrera universitaria).
Les agradezco, nuevamente, por las respuestas, por las sugerencias, los ejemplos y las explicaciones dadas. Ahora, será cuestión de que me ponga por mi cuenta a investigar el tema más en profundidad. Y, ante cualquier duda, les consultaré nuevamente.

Saludos.
Responder Con Cita
  #9  
Antiguo 18-07-2015
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por Lechu Ver Mensaje
Buenas tardes a todos.

Primero que nada, quiero agradecerles por tomarse el tiempo de leer mi duda/problemática y por brindarme sus respuestas.
Por otro lado, comentarles que me siento un poco "devastado", porque me parece increíble que, estando a punto de recibirme (solo me faltan rendir 6 finales, de los cuáles muchos son materias de Matemática, que poco tienen que ver con programación), no haya escuchado nada sobre esto que me plantean ustedes.
Evidentemente, hay algo mal en el plan de estudios para mi carrera (que, debo acotar, es un terciario y no una carrera universitaria).
Les agradezco, nuevamente, por las respuestas, por las sugerencias, los ejemplos y las explicaciones dadas. Ahora, será cuestión de que me ponga por mi cuenta a investigar el tema más en profundidad. Y, ante cualquier duda, les consultaré nuevamente.

Saludos.
Vuelvo al tema después de un buen tiempo porque estuve medio ocupado.

¿Que la matemática no tiene nada que ver con programación?
¡Madre Santísima!

El problema puede que no sea necesariamente, y totalmente, del plan de estudio sino de una pésima percepción de ti y miles de estudiantes.
El problema es de ambos lados (hay planes de estudio que si están mal planteados), pero mucho me temo que estos tipos de pensamiento y frases como la que tu y tantos estudiantes se avientan es más un producto debido a un completo desinterés y falta de ejercicio craneano en desarrollar la habilidad de conectar los contenidos entre las materias. Y eso es producto de arrastre de la secundaria, que es la etapa clave en la que se debe focalizar en desarrollar las habilidades conectoras inter curriculares. Y eso es responsabilidad de cada alumno.

No es tarea del profesor en decir "chicos, recuerden que lo que ven acá les va a servir o lo pueden aplicar allá o en X cosa". Eso ya es DEBER del estudiante.

Creo que muchos por acá coincidirán que en términos generales se está evidenciando una gran pérdida socio-cultural-educativa. En lo puntual en Argentina tengo evidencia de 1ra mano ya que mi madre viene ejerciendo la docencia desde hace 30 años y he notado como los planes educativos que se han venido reformando han estado recortando contenidos y alterado la currícula y los métodos de enseñanza de mal en peor. No es culpa de docentes, sino de una cuestión POLÍTICA. Que esto luego se vuelve SOCIAL, y en tercer lugar CULTURAL en la medida en que se van sucediendo los años y no se corrigen ya que esto se transmite en las siguientes generaciones.
Pongo ejemplos: El plan educativo propuesto para 1984 (año en que nací) contenía Teoría de Conjuntos, que se empezaba a dar de manera introductoria en 4to grado de primaria y luego con esto se sentaban las bases para que los contenidos de Álgebra que se daban en la secundaria. Cuatro años más tarde, en 1988, la teoría de Conjuntos desaparece de la enseñanza. Mi hermano, nacido en ese año no vió nada de Conjuntos. Le ha costado, y al día de hoy tal palabra le parece extraña.
Yo tuve materias tan variadas que iban desde Caligrafía hasta Psicología, pasando por Educación para la Salud, Lógica, Matemática, Lengua, Literatura, Geografía, Física, Química, Contabilidad, etc.
El plan educativo para mi hermano contemplaba modalidades, y condicionaba a que un chico de 13 años eligiera que área ir. Este plan fue copiado de uno que se probó en España y que duró en dicha tierra sólo un año debido a sus pésimos resultados. En cierto modo al poner a un chico a elegir que área ir, se lo está predisponiendo a que se enfrente de manera prematura a la decisión, que ya de por si es tán difícil y traumática para alguien de 18 inclusive, que es la de determinar su posible vocación. El plan 88 recortó muchas de las materias del 84, Caligrafía, Psicología, Lógica, Educación para la Salud son algunas. Si bien dicho plan contemplaba las materias "troncales" de Matemática, Lengua y Literatura, Física, Química y Biología (no recuerdo ahora si Geografía era troncal) comunes a todas. Dependiendo de la modalidad tenían mayor o menor carga horaria y se daban contenidos variados de una otra.
Mi hermano que a pesar de haberse ido por Naturales no recibió la teoría y práctica introductoria de Análisis Matemático (o Cálculo Matemático) y se ha perdido de entender lo que es derivadas.
Para los del plan 1997 les afectó otra reforma a los planes de estudio en la secundaria (en la primaria también le tocaron las bolas), ahora los chicos cursaban en lo que era 1er y 2do año de la vieja secundaria las materias comunes y una especie de formación básica. Los últimos 3 años ya eran la modalidad. Fue un intento de corregir, pero no... se seguía recortando contenidos. Le pregunto a mi hermana que este año termina la secundaria, si escuchó alguna vez el término números complejos. ¿Saben lo que me dijo? "¿Esos que eran los números con la letra i"? Si. En cuanto le pregunté que vieron de eso, me dijo que la clase sobre el tema duró solamente UNA SEMANA. Y lo único que se ha dictado es una introducción de lo que son, jugaron con sumar y restar de manera simple. Nada de mezclarlos con ecuaciones polinómicas. Como ella se fue a Sociales, le pregunté si en Naturales era más fuerte y me dió la negativa. Están igual.
Yo estuve presente en la reunión de padres (como soy el mayor de mis hermanos, y debido a una falta real y desprecio parental en preocuparse por la educación de sus hijos, y poniendo la excusa de que no tiene tiempo para tonteras. Va, que digo... si yo para tantas cosas he tenido que cumplir el rol de padre) para cuando se ha dado la reforma del plan de estudios que le afectó en su etapa secundaria. Noté muchos padres que asentaban la cabeza con un SI, que lo veían bien. Yo no pude evitarlo y me animé a hacer preguntas. Me animé sabiendo que tengo cierta confianza a quienes estaban exponiendo ya que mis hermanos fueron al mismo colegio que yo, y quien es rectora fue profesora mia.
En cuanto comenzé a preguntar y hacer ciertas críticas vi en algunos padres cierta preocupación. (Me encanta hacer lio ) Relaté el repaso que estoy exponiendo acá de como se fue alterando los planes educativos. Deliberadamente las autoridades omitieron ciertos detalles de las reformas que se fueron dando. Les pedí que revean esto y pedí que estén asistidos desde el primer momento por un Orientador Vocacional.
Al final de la reunión para tranquilizar a los padres se dijo que se les estará dando un seguimiento a cada chico.

Yo me guardé unas preguntas finales, porque veía venir que algunos padres se estaban volviendo a decir que bien y decir SI con la cabeza. Fuí directo con la temida pregunta: "¿Ustedes creen que un chico de 13 años está plenamente formado y ser capaz de asimilar que para sus 15 deberá optar por una orientación que podría afectar su vocación profesional?" Ellos decían que si. Luego les pregunté "¿Y que pasa si uno desea o siente que ha elegido mal? ¿Puede cambiar de modalidad?" Me dijeron que no puede cambiar, las plazas ya fueron armadas y que para evitar eso estará el orientador. Luego yo volví a insistir, con "Uno tiene el derecho de equivocarse y poder cambiar su decisión y de cuestionarse su futuro" La rectora ya no estaba con la carita sonriente con la que la conocí en la secundaria, y me dijo que Eso no impedía que alguien que haya estudiado una modalidad no pueda desempeñarse bien en una carrera fuera del área. Le di la razón a esa afirmación pero tuve que volver a atacar. Les señalé la pantalla y le dije "Si, es cierto lo que dice. Pero allí mismo en pantalla está puesto el programa de las materias. Y estoy viendo que según la modalidad hay contenidos que son más fuertes que otro. Luego el estudiante que desee ir por una carrera que no esté relacionada con la modalidad se verá afectado por esta deficiencia y le jugará en contra para nivelarse". A eso no tuve respuesta.

Me fui de esa reunión con sabor amargo. Ya han pasado 5 años de esa reunión. Lo único que conseguí es que si estuviera el Orientador. Pero por lo que me ha relatado mi hermana, sólo ha estado presente en el último año.
Mi hermana y el 90% de los estudiantes de todos los colegios y escuelas secundarias no saben que carrera estudiar. Esa estadística no es invento mío. Es un estudio que han hecho las universidades y organismos de estudios superiores. Me animo a decir que ese número es casi una constante desde hace años. Lo era en mis tiempos, y lo sigue siendo.

Mi hermana no sabe lo que es conjunto, no sabe lo que derivada, no sabe lo que es ecuación redox, no sabe lo que es un lípido, no sabe que función cumple los glóbulos rojos, no sabe... ¡Mierda! ¡No sabe ni ha visto la mitad de lo que yo he visto! Y mi plan ya era una mierda. Pero de entre toda la mierda educativa, al menos me animo a decir que fue el último plan decente.
Las siguientes reformas han ido cada ver a peor.

¿Saben lo que es lo más loco? Que hace poco, si no me falla la memoria, hace no más de 2 años se ha vuelto a reformar todo. Volvió al sistema del 84. Ya no habrá modalidades... no se si a los mismos contenidos... ojalá si (Y que se agregue muchísimo más). Pero claro, esta nueva reforma recién les tocará a los que empiecen la primaria el año que viene. No quieren implementarlo de manera forzada para no estar conviviendo con dos sistemas, sino en ir haciendo los cambios de manera gradual.

Repito: es decisión POLITICA.
Después de toda esta catarsis prolongada, aún cuando reconozco que buena parte se debe a errores que se arrastran desde las bases, hay algo fundamental aquí: NO INTERESA AL FINAL EL PLAN O EL SISTEMA. EL QUE QUIERE, Y SIENTE SED DE APRENDER, APRENDE A APRENDER. Y eso no se enseña. Eso nace de uno mismo.

Deberías agradecer a la matemática, que si no fuera por ella no estarías usando una computadora. Agradece al álgebra y la física que te ha dado los efectos gráficos tan hiper realistas de los videos juegos. Tienes mucho que agradecer.

En fin no quiero extenderme más en una reprimenda. Sólo te aconsejo que revises esa actitud tuya.

Sea un título terciario o universitario, los contenidos por ALGO están y no sobra NADA. Es muy fácil caer en ese reductio, del para que ver X cosa si no la voy a usar en mi puta vida. Lo hice yo, y es posible que hasta se lo haya cuestionado hasta la Madre Calculta. Pero en lugar de renegar por eso debieras de preguntarte, ¿Porqué me lo dan? Hacer ese "clic" es fundamental. Si consideras que el plan de estudios está mal, pues aprovecha el derecho que tienes de hacer válido tu reclamo a las autoridades. En mi facultad pasó eso y conseguimos que se reorienten mejor ciertos contenidos (y quizá hicimos que rodara alguna cabecita por ahí )

Ha por cierto, para aquel que pretenda decirme y que mierda hago yo para cambiar esto les aviso que están viendo a un profesor. Así es. A partir de esta segunda mitad de año empiezo a dar clases. A ver si alguna mente logro abrir. Y antes he pedido a mi madre y a varios maestros y profesores que hagan lio, Se los digo todos los años... bastante hincha pelotas soy . Hasta en el área superior (terciaria y universitaria) les he dejado críticas. De a poquito a algunos les fuí picando el bicho, y si... alguno que otros enemigos me he ganado (curiosamente, en su mayoría son aquellos que comulgan muy cercanamente con el oficialismo y a ciertos personajes que se dicen ser nacional y popular y de este proyecto. Incluso algunos de mis enemigos se han animado a expresar su admiración y declaro abiertamente ser miembros de fuerzas de choque social y política. Leáse la agrupación Unidos y Organizados y La Cámpora como si eso me hiciera tenerles miedo. Más que miedo me dan pena y vergüenza) El mensaje a toda la cúpula educativa que está en mi círculo de contacto es claro: No permitan que la política les siga marcando la cancha, y que sean ustedes el chivo expiatorio en la cual luego esta ya decaída sociedad les va a pedir que se hagan cargo de los platos rotos.
__________________
Delphius
[Guia de estilo][Buscar]

Última edición por Delphius fecha: 18-07-2015 a las 06:08:01.
Responder Con Cita
  #10  
Antiguo 18-07-2015
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.038
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Desde hace muchos años tenemos un problema similar por aquí, más o menos esto es lo que ocurrió muy resumidamente:
> Cada vez hay más alumnos que suspenden.
>> Los políticos "cabezaspensantes" dicen: no problem, hacemos todo más fácil para que aprueben más, eliminamos lo más difícil y lo que más complejo sea para los alumnos.
> Vaya, pues esto está peor, ahora los alumnos se esfuerzan menos y hay más suspendidos.
>> Los mismos "cabezaspensantes" dicen: que nadie se altere, que esto tiene solución, aumentamos las asignaturas que se pueden suspender para poder pasar de curso.
> Vaya, pues cada vez peor, ahora se esfuerzan muchísimo menos y suspenden más, aunque algunos pueden pasar de curso.
>> Los "cabezapensantes", ya tenemos la solución: se pasa de curso aunque se suspenda todo, no problem.
,,,
Y más o menos así estamos hoy en día, los alumnos (un gran porcentaje) están pendiente del smartphone, son unos maleducados que hacen lo que les da la gana, insultan, maltratan y ningunean a los profesores, suspenden todo y... ¡¡¡pasan de curso!!!, así cómo se van a esforzar.

Un amigo de toda la vida, que es profesor (fuimos juntos a la escuela), me contaba esto para resumir la situación actual: "¿Te acuerdas, Casimiro, el miedo que le teníamos a los profesores y la de tortazos que nos daban por cualquier cosa?, pues hoy en día es al revés, los profesores les tenemos miedo a los alumnos y nos dan un tortazo y no podemos hacer nada porque son menores de edad".

Así están las cosas.
Responder Con Cita
  #11  
Antiguo 18-07-2015
Lechu Lechu is offline
Registrado
NULL
 
Registrado: ene 2013
Posts: 8
Poder: 0
Lechu Va por buen camino
Cita:
Empezado por Delphius Ver Mensaje
Vuelvo al tema después de un buen tiempo porque estuve medio ocupado.

¿Que la matemática no tiene nada que ver con programación?
¡Madre Santísima!

El problema puede que no sea necesariamente, y totalmente, del plan de estudio sino de una pésima percepción de ti y miles de estudiantes.
El problema es de ambos lados (hay planes de estudio que si están mal planteados), pero mucho me temo que estos tipos de pensamiento y frases como la que tu y tantos estudiantes se avientan es más un producto debido a un completo desinterés y falta de ejercicio craneano en desarrollar la habilidad de conectar los contenidos entre las materias. Y eso es producto de arrastre de la secundaria, que es la etapa clave en la que se debe focalizar en desarrollar las habilidades conectoras inter curriculares. Y eso es responsabilidad de cada alumno.
Bueno. Voy a aclarar esto. Yo nunca dije que la matemática no tiene nada que ver con la programación. Dije que tenía poco que ver y fue en el sentido de que: en mi caso, que adeudo tres finales relacionados con matemática (de seis que adeudo en total para recibirme), ninguna de esas materias me ha ayudado a ver lo que es un framework de persistencia o cómo "relacionar" la POO con el sistema relacional de las bases de datos.
¿Se entiende? Simplemente eso. Quise decir que, si en las materias de programación no aprendí todo lo que me expusieron en este hilo, mucho menos lo voy a aprender con las materias de matemática.
Pero no creo tener desinterés ni la mala habilidad de conectar los contenidos entre las materias.

Saludos.
Responder Con Cita
  #12  
Antiguo 18-07-2015
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por Lechu Ver Mensaje
Bueno. Voy a aclarar esto. Yo nunca dije que la matemática no tiene nada que ver con la programación. Dije que tenía poco que ver y fue en el sentido de que: en mi caso, que adeudo tres finales relacionados con matemática (de seis que adeudo en total para recibirme), ninguna de esas materias me ha ayudado a ver lo que es un framework de persistencia o cómo "relacionar" la POO con el sistema relacional de las bases de datos.
¿Se entiende? Simplemente eso. Quise decir que, si en las materias de programación no aprendí todo lo que me expusieron en este hilo, mucho menos lo voy a aprender con las materias de matemática.
Pero no creo tener desinterés ni la mala habilidad de conectar los contenidos entre las materias.

Saludos.
No podes culpar a la matemática por contenidos que se ven en la cátedra de Lenguajes, como ser los conceptos que se vinculan o dan forma a los frameworks.
Tampoco es válido el planteo si de es mucho o poco que ver la matemática con programación. Lo cierto es que la Programación ES matemática, que tu no hayas descubierto ni visto eso (todavía) es otra cosa. No se debe despreciarla, sea mucha o poca.
Tarde o temprano, generalmente tarde, uno después se da cuenta en cuanto debería haber valorado los conceptos.

Como he dicho yo hace tiempo en mi primer intervención. Asimilar las cosas requiere de tiempo y muchas leídas. Obviamente que no vas a descubrir la relación a la primera, ni a la tercera. Pero en tu palabra está manifiesto el desánimo, la queja, y fuiste tu quien invitó a la matemática y la mencionó primero. Afortunadamente has logrado hacerte del juicio crítico y sabido encontrar la barrera que te ha puesto en este dilema OO... tarde o temprano todos los desarrolladores llegan a este "pozo". Eso demuestra que no tan perdido no estabas. Pero si me animo a decirte que si te falta lograr unir contenidos.
En cuanto aprecies más la matemática verás lo lindo que es usarla en programación.
Como he dicho: que esto es un camino de irse autodescubriendo. Y si, la crítica de que hay pesimos estudiantes y hay cada vez más estudiantes vagos y no hacen tanto ejercicio craneado la seguiré haciendo. Porque tarde o temprano A TODOS nos gana la vagancia y queremos la salida fácil. Sorpresa: no hay salida fácil. Hay que aprender a aprender.
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
  #13  
Antiguo 18-07-2015
Lechu Lechu is offline
Registrado
NULL
 
Registrado: ene 2013
Posts: 8
Poder: 0
Lechu Va por buen camino
Cita:
Empezado por Delphius Ver Mensaje
No podes culpar a la matemática por contenidos que se ven en la cátedra de Lenguajes, como ser los conceptos que se vinculan o dan forma a los frameworks.
Tampoco es válido el planteo si de es mucho o poco que ver la matemática con programación. Lo cierto es que la Programación ES matemática, que tu no hayas descubierto ni visto eso (todavía) es otra cosa. No se debe despreciarla, sea mucha o poca.
Tarde o temprano, generalmente tarde, uno después se da cuenta en cuanto debería haber valorado los conceptos.

Como he dicho yo hace tiempo en mi primer intervención. Asimilar las cosas requiere de tiempo y muchas leídas. Obviamente que no vas a descubrir la relación a la primera, ni a la tercera. Pero en tu palabra está manifiesto el desánimo, la queja, y fuiste tu quien invitó a la matemática y la mencionó primero. Afortunadamente has logrado hacerte del juicio crítico y sabido encontrar la barrera que te ha puesto en este dilema OO... tarde o temprano todos los desarrolladores llegan a este "pozo". Eso demuestra que no tan perdido no estabas. Pero si me animo a decirte que si te falta lograr unir contenidos.
En cuanto aprecies más la matemática verás lo lindo que es usarla en programación.
Como he dicho: que esto es un camino de irse autodescubriendo. Y si, la crítica de que hay pesimos estudiantes y hay cada vez más estudiantes vagos y no hacen tanto ejercicio craneado la seguiré haciendo. Porque tarde o temprano A TODOS nos gana la vagancia y queremos la salida fácil. Sorpresa: no hay salida fácil. Hay que aprender a aprender.
Yo no estoy culpando a las materias matemáticas por contenido que me deberían haber enseñado en materias de programación. Y también entiendo, sé y veo todo el tiempo que la programación es todo matemáticas.

Tampoco desprecio la matemática. Al contrario, me parece un campo muy lindo para aprender. Ojalá supiera dominarla mejor de lo que lo hago. Pero quiero dejar en claro que no me quejo ni me desanimo por las materias matemáticas ni mucho menos; simplemente, me desanima el hecho de estar a punto de recibirme y no haber oído los conceptos que se me plantearon en este hilo.
No sé por qué metés tanto a las materias de matemática. Yo, simplemente, dije (en otras palabras): me estoy por recibir, me faltan seis materias de las cuales tres son de matemática, y NO VI, NO APRENDÍ nada de lo que se me presentó acá.
Nunca menosprecié las materias de matemática ni mucho menos. Ni las culpé. Ni nada. Simplemente, comenté eso.

Saludos.
Responder Con Cita
  #14  
Antiguo 19-07-2015
Avatar de mamcx
mamcx mamcx is offline
Moderador
 
Registrado: sep 2004
Ubicación: Medellín - Colombia
Posts: 3.911
Poder: 25
mamcx Tiene un aura espectacularmamcx Tiene un aura espectacularmamcx Tiene un aura espectacular
No eres el unico con un anemico entendimiento de las matematicas y otros temas.

Es inquestionable que la manera como se ha hecho la educacion al respecto es un *fracaso* monumental: Que otra materia genera tan generalizada sensacion de ineptitud, fracaso y desconcierto en la mayoria de la poblacion?

Por eso, seguro te gustara:

http://worrydream.com/KillMath/

Que entre otras cosas articula porque las matematicas en su forma actual son ineficaces, y como hacerlo mejor y:

http://betterexplained.com/

Que explican muchos conceptos de una mucho mejor forma.
__________________
El malabarista.
Responder Con Cita
  #15  
Antiguo 19-07-2015
Avatar de Delphius
[Delphius] Delphius is offline
Miembro Premium
 
Registrado: jul 2004
Ubicación: Salta, Argentina
Posts: 5.582
Poder: 25
Delphius Va camino a la fama
Cita:
Empezado por Lechu Ver Mensaje
Yo no estoy culpando a las materias matemáticas por contenido que me deberían haber enseñado en materias de programación. Y también entiendo, sé y veo todo el tiempo que la programación es todo matemáticas.

Tampoco desprecio la matemática. Al contrario, me parece un campo muy lindo para aprender. Ojalá supiera dominarla mejor de lo que lo hago. Pero quiero dejar en claro que no me quejo ni me desanimo por las materias matemáticas ni mucho menos; simplemente, me desanima el hecho de estar a punto de recibirme y no haber oído los conceptos que se me plantearon en este hilo.
No sé por qué metés tanto a las materias de matemática. Yo, simplemente, dije (en otras palabras): me estoy por recibir, me faltan seis materias de las cuales tres son de matemática, y NO VI, NO APRENDÍ nada de lo que se me presentó acá.
Nunca menosprecié las materias de matemática ni mucho menos. Ni las culpé. Ni nada. Simplemente, comenté eso.

Saludos.
Lechu, yo al comienzo he dicho que por lo general (o en la mayoría de los casos, como prefieras decirlo) el concepto de framework de persistencia no está en los planes de estudios. Allí dejé una primera pista, y veo que como muchos, no supiste leerla. Asi que nuevamente: no culpes a tu plan de estudios. SI he dicho que deben de haberte dados las bases y los lineamientos para que por tus propios medios puedas ligar los conceptos y llegar a eso. Es en ese punto en donde todavía no logras engancharte y descubrirlo.

Es muy extraño que estando a terminar la carrera no hayas forjado más ciertos conceptos. Estoy completamente seguro que te dieron los conceptos que mencioné en mi primer post: separación de capa lógica, datos e interfaz, acoplamiento, cohesión, algo de patrones (porque habitualmente tampoco se suele dan). He dicho, cuesta y lleva su tiempo hacer "clics". La enorme mayoría de las veces se da después de terminar la carrera. Si, como he dicho: las cosas se terminan asimilando después de terminar la carrera. Asi que ahí tienes otra pista.

Y puntualizo: quizá en tu programa de estudio no esté le enseñanza de lo que es un framework de persistencia pero estas palabritas tu profesor las debe haber dejado de pasada y las pistas suficientes para que luego cada estudiante con su propia sed de conocimiento amplíe y fortalezca lo aprendido e investigue por su cuenta.

Hay que unir ideas, no hay que quedarse unicamente con lo dicho en clase. ¡Pero no hay tiempo!

Y en tu expresiones si dejaste parte de tu mal pasar y sentir, y te agarrastre o arrastraste a la matemática. La matemática tampoco es culpable aquí. La teoría de framework es del área de Lenguajes. Tus palabras llevan cierto descorazonamiento y artazo de la buena y noble matemática. Y la arrastra en la culpa de que tu profe no te hada dicho al oido estudien framework de persistencia.

Lo más probable es que no te enseñen el tema de frameworks. Pero de que te dejaron las migas de pan para que llegues a él estoy seguro que si. Voy a ir más directo y dejar ya el método indirecto.

¿Te doy la respuesta corta?
Es al puro huevo que te pongas ahora a estudiar y tener pensado para hacer tus trabajos de cátedra en emplear/implementar un framework de persistencia. Lo que tu profesor quiere es que apliquen los conceptos que están viendo. No busca que le den perfección y super profesionalidad.

No te vayas más allá. Los frameworks requieren de tiempo y esfuerzo. Cosa que no hay para estar malgastando mientras se está cursando. Tu profe no quiere que hagas uso de eso... no al menos todavía.
Asi que si, te estás por complicar innecesariamente. Mantenlo simple pero funcional y que responda a los objetivos de cátedra.
Deja el tema de framework para más adelante.

Desarrolla ahora tu propia forma de traer los datos desde el motor, y llenar tus objetos. Pero no busques llegar al framework, va a ser un esfuerzo muy caro.

Es muy bueno que te hayas dado cuenta temprano del "pozo". Aplaudo eso, porque eso quiere decir que tienes dotes de analista. Más te aconsejo, por mi experiencia, que no te sobresatures. Haz los trabajos, y si quieres ve estudiando por aparte el tema de frameworks. Más no te esfuerces demasiado. En serio te lo digo.

Piensa de forma inversa... Ya que no viste formalmente la teoría de los frameworks de persistencia, ¿Tiene sentido esperar que el profesor pida que lo hagan?

Si, si... lo se. En mi primer post te pegué con la extraña manera de que no te hayan dado los conceptos. Esperaba que alguna vez alguien razonara entre las líneas. Veo que sigue siendo un desafío en la educación en como enseñar sin realmente sentir que le enseñanza sea un castigo y algo tedioso a la que estar sometiendo a los estudiantes a que repitan como loros y meterles las cosas en la cabeza a presión. A ver como lo digo: Muchos te hemos dicho que el tema es complicado, lleva tiempo, se necesita preparación, etc. Mamx al comienzo ya había dado la punta: ¡Chico, no te compliques, tienes SQL úsalo!

Te invitamos al otro lado del pozo, para que veas el mundo que te espera. Más no te hemos dicho que esta sea LA UNICA RESPUESTA.
Ya era responsabilidad tuya el que analizaras y te hagas la pregunta "Ummm... ¿será esto lo que realmente el profe ha pedido que lleguemos?" "¿No será demasiado?" "Pero que raro... no vimos lo que es frameworks de persistencia pero los chicos del foro me dicen que es así"

Y bueno. Lee entre nuestras líneas. Estás al borde... todos los estudiantes caen en sus propias crisis explosivas. Algunos se vuelven sobre sus pasos y hasta se cuestionan si hicieron bien en estudiar la carrera, otros se debaten el porqué hay materias que sienten que no suman, otros no superan el estres y necesitan darse tiempo aún a costa de tener que recursar... Cada quien tiene las crisis de finales de carrera (y agradece que es terciario, porque si fuera universitario... pufff peorcito) y también las hay del inicio de carrera con las materias de colador.

Tal parece que voy a tener que dejar la psicología explota cabezas pero como profesor me parece una excelente forma de abrir mentes de forma natural y más "espontánea" que en lugar de aplicar la técnica de la vieja escuela de repetir como loro y esperar que se grabe.

Saludos,
__________________
Delphius
[Guia de estilo][Buscar]
Responder Con Cita
Respuesta



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
Como sincronizar datos entre bases datos cliente a servidor (asincronicamente) Efren2006 OOP 6 29-03-2013 11:36:11
Insertar datos entre bases de datos diferentes franjero Firebird e Interbase 1 19-06-2012 08:32:42
Operaciones entre bases de datos subzero MS SQL Server 3 17-01-2008 21:55:57
Enlaces entre Bases de Datos!! Chik_Electronik C++ Builder 3 01-06-2006 05:00:37
Bases de datos orientadas a objetos AlbertoC Conexión con bases de datos 0 19-05-2005 14:44:18


La franja horaria es GMT +2. Ahora son las 06:29:27.


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