CLASE en programación. Concepto e implementación en C#

Introducción

En este artícu­lo vamos a ver qué es una CLASE en pro­gra­mación, cuáles son sus com­po­nentes, dia­gra­mas de clase y vamos a ver ejem­p­los de clases en lengua­je C#. Además podrás encon­trar dos vídeos del canal que hablan sobre el con­cep­to de clase en pro­gra­mación y otro que mues­tra el análi­sis de un dia­gra­ma de clases prop­uesto para resolver un trabajo.

Esti­ma­dos internautas

🍷🧐

ACERCA DE ESTOS VÍDEOS

En el vídeo de la izquier­da hablam­os sobre el CONCEPTO de CLASE en pro­gra­mación ori­en­ta­da a obje­tos, des­de el pun­to de vista del lengua­je que uti­lizamos como per­sonas. En el vídeo de la derecha vemos el análi­sis de un dia­gra­ma de clases prop­uesto para resolver un tra­ba­jo final sobre pro­gra­mación ori­en­ta­da a objetos.

AQUÍ TIENES MI LISTA DE VÍDEOS SOBRE PROGRAMACIÓN PARA GUARDARLA
👇🏽


¿Qué es una CLASE en programación?

El con­cep­to de Clase está lig­a­do a la pro­gra­mación ori­en­ta­da a obje­tos.

Una clase es una her­ramien­ta que ten­emos para mod­e­lar obje­tos de pro­gra­mación, lograr que se com­porten como quer­e­mos y hac­er tan­tas copias de estos obje­tos como necesitemos.

Por aho­ra sim­ple­mente pense­mos que es códi­go que está encap­su­la­do en un Script de pro­gra­mación.

Cuan­do pro­gra­mamos en C# uti­lizan­do Uni­ty, al crear un nue­vo Script automáti­ca­mente creamos una clase cuyo nom­bre coin­cide con el nom­bre del archi­vo del Script.

La ter­mi­nología que usamos al referirnos a una clase prob­a­ble­mente cam­bia depen­di­en­do de la bib­li­ografía o los pro­fe­sores, pero si logramos cap­tar la idea bási­ca podremos usar este conocimien­to para crear solu­ciones para nue­stros proyectos.

¿Para qué sirven las Clases en programación?

Las clases en Pro­gra­mación se uti­lizan para crear mod­e­los com­puta­cionales de obje­tos, estos obje­tos pueden ser mod­e­los de cualquier cosa, des­de obje­tos tan­gi­bles del mun­do real has­ta obje­tos abstrac­tos que cum­plan una deter­mi­na­da fun­ción. Por ejem­p­lo podemos mod­e­lar un obje­to de clase "Árbol", en el cual selec­cionare­mos las car­ac­terís­ti­cas y fun­ciones más rel­e­vantes de los árboles, depen­di­en­do del niv­el de com­ple­ji­dad de nue­stro modelo.

La infor­ma­ción y fun­ciones nece­sarias para lle­var a cabo el com­por­tamien­to del obje­to estarán definidas den­tro de la clase de pro­gra­mación. De esta for­ma, uti­lizan­do la Clase como molde, podemos crear tan­tos obje­tos de la mis­ma clase como necesitemos.

Cómo crear una CLASE en Programación

Depen­di­en­do de lo que este­mos hacien­do, crear una clase se hará de una for­ma u otra. En gen­er­al lo que hare­mos será crear un archi­vo de instruc­ciones con la exten­sión del lengua­je de pro­gra­mación que este­mos usan­do y cuyo nom­bre coin­cidirá con el nom­bre que le demos a la clase en su declaración.

En gen­er­al los entornos de desar­rol­lo nos sim­pli­f­i­can el pro­ce­so de creación de una clase. Por ejem­p­lo en Uni­ty des­de la car­pe­ta del proyec­to podemos hac­er clic dere­cho y usar los menúes para crear un nue­vo Script C#, como se mues­tra en la figu­ra 1. 

ventana de creacion de script c sharp en unity
Fig. 1: Des­de la ven­tana proyec­to se puede crear nuevos Script C#.

Para mostrar algunos ejem­p­los de clases en Uni­ty, voy a crear los tres Scripts que se obser­van en la figu­ra 2.

scripts c sharp en unity
Fig. 2: Voy a crear tres Scripts para ejem­pli­ficar las clases en programación.

Ejemplo 1, una Clase de Programación genérica

Cuan­do creamos un nue­vo Script, al abrir­lo nos vamos a encon­trar con algo de códi­go ya escrito.

En la figu­ra 3 podemos obser­var que en las tres primeras líneas se impor­tan algu­nas libr­erías que nos per­mi­tirán acced­er a la fun­cional­i­dad del motor Unity.

Luego se obser­va que se define una clase lla­ma­da "Clase1", la defini­ción de la clase empieza en la línea 5 y ter­mi­na en la línea 18 con el cierre de la llave.

Algo que tam­bién vemos es el "MonoBe­hav­iour" a la derecha del nom­bre de la clase, esto quiere decir que nues­tra "Clase1" va a ser una exten­sión de la clase MonoBe­hav­iour, lo que se conoce como herencia.

Heren­cia es un tema genial y no vamos a pro­fun­dizar en este artícu­lo, por el momen­to pense­mos que si una clase lla­ma­da Clase1 here­da de la clase MonoBe­hav­iour, quiere decir que Clase1 es en sí un MonoBe­hav­iour pero con fun­cional­i­dad más específica. 

Es como pen­sar en per­ros y gatos, se tra­ta de especies dis­tin­tas pero com­parten cier­tas car­ac­terís­ti­cas como el número de patas y tam­bién tienen com­por­tamien­tos sim­i­lares como cam­i­nar, cor­rer, com­er y res­pi­rar. Esto hace que podamos agru­par­los por ejem­p­lo en una clase lla­ma­da Ser­Vi­vo, Ani­mal o Cuadrupe­do (no se usa acen­tos en programación).

MonoBe­hav­iour es como la clase bási­ca de los GameOb­jects en Uni­ty y per­mite que estos puedan ser ini­cial­iza­dos automáti­ca­mente a través del méto­do Start y tam­bién se eje­cu­tan automáti­ca­mente los méto­dos Update (tam­bién definidos automáti­ca­mente al crear una clase, líneas 8 y 14 de la figu­ra 3) y FixedUp­date por ejem­p­lo. Para más detalles sobre la clase MonoBe­hav­iour puedes echar un vis­ta­zo a la API de Uni­ty.

nuevo script c sharp por defecto en unity, clase que hereda de monobehaviour
Fig. 3: El primer ejem­p­lo mues­tra cómo se ve un nue­vo Script. Se tra­ta de la clase Clase1 que here­da de la clase MonoBehaviour

Ejemplo 2, Subclase de Object

En el ejem­p­lo de la figu­ra 4 se ha removi­do la heren­cia de MonoBe­hav­iour, esto impli­ca que la Clase2 va a heredar implici­ta­mente de la clase "Object", la cual prob­a­ble­mente es la madre de todas las clases que vamos a usar en Unity.

Al remover el MonoBe­hav­iour los comen­tar­ios en verde en las líneas 7 y 13 de la figu­ra 4 dejan de ser ver­dad. Estos méto­dos Start y Update no serán eje­cu­ta­dos automáticamente.

Nor­mal­mente no se suele uti­lizar en Uni­ty este tipo de clases que deriv­en direc­ta­mente de Object.

nuevo script c sharp por defecto en unity, clase que hereda de object
Fig. 4: En el segun­do ejem­p­lo elim­i­namos la heren­cia de MonoBe­hav­iour, lo que quiere decir que la clase Clase2 here­da de Object.

Ejemplo 3, Subclase de otra clase

Este ejem­p­lo es sim­i­lar al ejem­p­lo 1, podemos hac­er clases que deriv­en de otras clases (heren­cia de clases), no nece­sari­a­mente MonoBe­hav­iour sino cualquier clase de Uni­tyEngine o que hayamos creado.

En la figu­ra 5 vemos que la clase Clase3 here­da de Clase2.

nuevo script c sharp por defecto en unity, clase que hereda de otra clase
Fig. 5: La clase Clase3 here­da de la clase Clase2.

Ejemplo 4, Clases de Programación Java

Uti­lizan­do el IDE Net­Beans hice un par de clases en Java para mostrar, si bien Uni­ty no se uti­liza Java, es intere­sante ver las simil­i­tudes y diferencias.

Las sigu­ientes clases serán análo­gas a las creadas en los ejem­p­los 2 y 3.

La figu­ra 6 mues­tra una clase lla­ma­da Clase1 que deri­va de Object mien­tras que la figu­ra 7 mues­tra una clase lla­ma­da Clase2 que deri­va de Clase1.

nuevo script java en netbeans
Fig. 6: Defini­ción de clase en Java uti­lizan­do el IDE NetBeans.

nuevo script java en netbeans, herencia
Fig. 7: Para indicar que la heren­cia se uti­liza la pal­abra extends.

Componentes o miembros de una Clase de Programación

Las clases en pro­gra­mación las uti­lizamos para mod­e­lar obje­tos que quer­e­mos que cum­plan una función.

Campos

Son los datos que tiene la clase, pueden ser vari­ables o inclu­so instan­cias de otras clases.

Por ejem­p­lo una clase lla­ma­da "Auto" podría ten­er una vari­able booleana para indicar si está encen­di­do o no. Una vari­able float para indicar la veloci­dad y otra para el com­bustible restante.

Podríamos uti­lizar un vec­tor de tres dimen­siones (clase "Vector3" en Uni­ty) para deter­mi­nar la veloci­dad y direc­ción de movimiento.

Tam­bién la clase "Auto" podría ten­er entre sus cam­pos la instan­cia de otra clase lla­ma­da "Motor", la cual a su vez ten­drá definido sus pro­pios miembros.

Métodos

Los méto­dos son los que proveen fun­cional­i­dad a una clase, per­mi­tién­dole realizar tar­eas, manip­u­lar sus cam­pos e inter­ac­tu­ar con otras clases.

Para saber más sobre méto­dos te invi­to a leer este artícu­lo sobre méto­dos en programación.

Volvien­do al ejem­p­lo de la clase "Auto" que tiene entre sus cam­pos la clase "Motor".

Supong­amos que Auto tiene un méto­do lla­ma­do "Acel­er­ar" que se encar­gue de aumen­tar pro­gre­si­va­mente la veloci­dad del vehículo.

El diagrama de Clases

Una her­ramien­ta útil a la hora de refle­jar la estruc­tura de clases que hare­mos para plantear una solu­ción es el dia­gra­ma de clases, en el mostraremos las dis­tin­tas clases, la relación que existe entre ellas y mostraremos la heren­cia de clases que pue­da haber.

En la figu­ra 8 vemos un ejem­p­lo de dia­gra­ma de clases basa­do en el ejer­ci­cio prác­ti­co de clases en pro­gra­mación.

diagrama de clases para ejemplificar las relaciones entre las clases, jerarquia de clases
Fig. 8: Ejem­p­lo de lo que podría ser un dia­gra­ma de clases en un proyecto

Diagrama de Objetos

Una vez que ten­emos definidas las clases que estarán pre­sentes pen­samos en sus posi­bles cam­pos y méto­dos, en esta parte está bueno reflex­ionar sobre la nat­u­raleza del obje­to que quer­e­mos mod­e­lar, cuáles son sus car­ac­terís­ti­cas, qué infor­ma­ción mane­ja y cuál puede ser su comportamiento.

Podemos rep­re­sen­tar los cam­pos y méto­dos de una clase usan­do "dia­gra­mas de Obje­tos" que en gen­er­al se dibu­jan con una caja por cada clase, indi­can­do cam­pos y méto­dos usan­do los nom­bres que les vamos a dar en el script y sep­a­ra­dos por una línea (en mi caso a los méto­dos les agrego los sím­bo­los "( )" para indicar que se tra­ta de méto­dos). Para los cam­pos indicamos tam­bién el tipo de dato.

Otra cosa que podemos indicar es la vis­i­bil­i­dad de los cam­pos y méto­dos, uti­lizan­do un sig­no "+" para los cam­pos y méto­dos públi­cos y el sig­no "-" para cam­pos y méto­dos privados.

En la figu­ra 9 se obser­van dia­gra­mas de Obje­tos para las 4 clases del dia­gra­ma de clases de la figu­ra 8.

diagrama de clases que muestra cuatro clases que modelan objetos
Fig. 9: Uti­lizan­do estas cajas indicamos los atrib­u­tos y méto­dos, públi­cos y pri­va­dos de las clases.

Conclusión

En este artícu­lo hemos vis­to qué es una clase en pro­gra­mación, la cual es como una plan­til­la que nos per­mi­tirá crear todos los obje­tos que quer­amos y que ten­drán los atrib­u­tos y méto­dos que hemos definido den­tro de la clase.

Las clases tienen definido en su inte­ri­or cam­pos y méto­dos que en con­jun­to definirán su nat­u­raleza y comportamiento.

El dia­gra­ma de clases nos ayu­da a rep­re­sen­tar la relación que existe entre nues­tras clases.

El dia­gra­ma de obje­tos per­mite rep­re­sen­tar los cam­pos y méto­dos de una clase jun­to con su visibilidad.

3 comentarios en “CLASE en programación. Concepto e implementación en C#”

  1. Pingback: { Qué es una VARIABLE en programación? } - BOOL INT FLOAT

  2. Pingback: { Diferencias entre CLASE y OBJETO en Programación }

  3. Pingback: { Qué es una INSTANCIA en Programación Orientada a Objetos }

Los comentarios están cerrados.

Scroll al inicio
Secured By miniOrange