Pregunta

En general, creo que puedo transmitir bastante bien la mayoría de los conceptos relacionados con la programación.
Sin embargo, aún me resulta difícil resumir la relación entre Campos, Clases y Paquetes.


¿Cómo resumir " Campos " ;, " Clases " y " Paquetes " y " Su relación " ?

¿Fue útil?

Solución

He enfrentado un problema similar desde que enseñé C, C ++ y Java. Esto es lo que hago:

Primero, guardo los paquetes por separado y los explico al final.

Idealmente, en mi opinión, los estudiantes primero deben aprender acerca de los TDA, preferiblemente en C. Tienen la estructura, tienen las operaciones separadas en ella. Los campos son simplemente las " ranuras " en la estructura e incluso puede mostrar el diseño de la memoria para demostrarlo. Las funciones son entidades separadas que operan en esas estructuras.

Luego, realiza la transición a clases, métodos y campos y muestra que en esencia (salvo la herencia y algunas anécdotas) son, en muchos aspectos, azúcar sintáctico para TDA.

Si lo necesita, puede enseñar diseños de objetos, herencias y tablas virtuales (en mi experiencia, ayuda a los estudiantes a comprender mejor la herencia para ver el diseño de la memoria).

Finalmente llegas al tema de cómo organizar clases juntos. Si enseña C ++, realmente no tiene paquetes, pero puede explicar los espacios de nombres y discutir la organización y la compilación por separado.

Si está en Java, entonces solo explica que estas son colecciones de clases en el mismo espacio de nombres, que tienen reglas de acceso especiales y las muestran. El sistema de paquetes en Java está algo roto de todos modos, por lo que normalmente paso por los patrones (por ejemplo, separando un paquete de UI de la C).

En resumen: las clases forman la base de los objetos que son una disposición de memoria de varios campos y métodos asociados que operan en ellos. Los paquetes son colecciones de clases que tienen un mecanismo de restricción de acceso más.

Otros consejos

La forma en que lo describo es:

  • Los objetos son colecciones de ranuras, las ranuras que contienen datos son campos, las ranuras que contienen código son métodos. Las ranuras públicas están en el exterior del objeto, las ranuras privadas están en el interior. Los métodos deben ser mayormente públicos porque un objeto ofrece servicios a los clientes, los campos deben ser privados para que los clientes no sepan cómo funcionan los servicios. Los campos son, por lo tanto, un detalle de implementación de objetos.
  • Los nombres de clase deben ser únicos, para que pueda combinar su código con bibliotecas de terceros. Los nombres de clase simples / cortos no son suficientes, ya que probablemente hay miles de clases llamadas "Lista", "Cliente", etc. Por lo tanto, las clases se ubican en paquetes para crear nombres más largos y difíciles de duplicar. Solo un subconjunto de las clases en el paquete debe ser visible para los clientes, de ahí los dos niveles de acceso público y predeterminado. Esto permite que un paquete funcione como una biblioteca.

Por lo tanto, los campos son un detalle de implementación de objetos, cuyas clases viven en paquetes para garantizar nombres únicos y proporcionar una modularidad similar a una biblioteca.

Dependiendo de la edad de la persona a la que intenta explicárselo, hay una analogía simple que se puede usar: los formularios de impuestos. Un formulario de impuestos (como el 1040EZ, por ejemplo) es como una clase, y cada espacio que se debe completar en el formulario es un campo del formulario. El formulario de impuestos incluso contiene instrucciones sobre qué hacer con la información en los campos, al igual que una clase incluye funciones de miembros que se realizarán en los datos de los campos. Y así como un conjunto completo de formularios de impuestos incluye no solo el formulario de impuestos principal, sino otros que deben completarse (horarios adicionales, por ejemplo), por lo que un paquete contiene no solo las clases principales, sino otras clases que puede necesitar para interactuar. con.

Los campos son variables que pertenecen a la clase, o a instancias de objeto de la clase. La diferencia entre una variable local y un campo es que los campos tienen un alcance más amplio.

Las clases son plantillas para tipos de datos definidos por el usuario. Las clases son más avanzadas que los tipos de datos primitivos porque tienen estado y comportamiento.

Los paquetes se utilizan para agrupar clases y resolver posibles conflictos de nombres. Con múltiples desarrolladores y bibliotecas de códigos disponibles públicamente, es muy probable que algunos de nosotros nombremos a nuestras clases de la misma forma (Matemáticas, Lista vinculada, FileUtils, etc.). Tener un nombre de paquete único que prefija el nombre de la clase permite que el compilador (y otros desarrolladores) determinen qué clase va a usar.

Curiosamente, abordó la programación OO sin mencionar objetos. Creo que ese puede ser tu problema.

Esto es lo que uso.

Los objetos son cosas. Tienen atributos (medidas, estados de ser, etc.). Los atributos pueden llamarse campos. [A menudo utilizo cosas que encuentro en el aula: tazas, marcadores, sombreros, abrigos, etc., para ilustrar esto.]

Los objetos también se involucran en comportamientos, llamados métodos, funciones de método u operaciones.

Las características (atributos y operaciones, campos y métodos, lo que sea) de un objeto proporcionan una forma de clasificar los objetos.

Las características que son comunes a una clase de objetos son, bueno, se pueden recopilar en una definición de clase. Una definición de clase describe los atributos y métodos de los objetos que son miembros de la clase.

Un paquete es una colección de definiciones de clase. Mientras que, idealmente, las clases en un paquete tienen algo en común, eso no es un requisito y no es una distinción útil.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top