[MÚSICA] [MÚSICA] [MÚSICA] Hola y bienvenidos. En esta lección hablaremos de los diagramas de clase. Al final de esta lección podrás leer diagramas de clases básicos y nombrarlos correctamente. Podrás también modelar atributos básicos con tipos de datos primitivos y comprender la diferencia entre una clase y el objeto. Con un diagrama de clases podemos hacer una abstracción de realidad y presentar los elementos más importantes o de interés para nuestro problema en particular. Un diagrama de clases tiene clases y asociaciones. Primero vamos a estudiar el concepto de clase. Las clases representan un conjunto de objetos que comparten las mismas características y comportamientos. Por ejemplo si quisiéramos modelar a un estudiante universitario crearíamos una clase de estudiante que representa a todos los estudiantes de la universidad. En UML para representar una clase utilizamos un rectángulo que está dividido en tres compartimientos. En el primer compartimiento vamos a poner el nombre. Por convención al momento de nombrar las clases la primera letra siempre va con mayúscula. Si tenemos varias palabras en el nombre, utilizamos camel case, esto significa que en vez de separar las palabras con guiones o espacios simplemente las pegamos y cada nueva palabra empieza con mayúscula. Si quisiéramos nombrar nuestra clase de estudiante como estudiante universitario tendríamos que nombrarla EstudianteUniversitario y la u iría con mayúscula. Los objetos son instancias particulares de las clases que you tomaron valores. Si consideramos las clases igual que planos, al igual que con un plano podemos construir una casa, podemos hacer muchas casas basadas en un plano, y al igual que un plano no es una casa, una clase no es un objeto. Podemos instanciar entonces a partir de la misma clase diferentes objetos. Por ejemplo, nuestra clase estudiante podría servirnos para instanciar diferentes estudiantes, cada uno con sus propias características. En UML representaremos estos objetos que podemos instanciar a partir de la clase con rectángulos con las esquinas redondeadas. Y en el primer compartimiento nombraremos a qué clase pertenece. Todo esto tiene que ir subrayado. [MÚSICA] Podemos darles nombres particulares si queremos diferenciarlos de otros objetos. Por el momento no lo nombraremos pero quizá más adelante podemos darle un nombre propio a este objeto. Ahora hablemos de los atributos. Los atributos de una clase representan la característica o propiedades que tendrán los objetos de la misma. Esto nos permite modelar con mayor precisión nuestra abstracción del problema. Los atributos los escribiremos en este segundo compartimiento de nuestra clase. Vamos a modelar nuestra clase estudiante con tres atributos, uno que representa el nombre, uno que representa su código el que vamos a llamar carnet y uno que representa su fecha de nacimiento. Como vemos, cuando vamos a nombrar atributos primero, sus nombres deben ser explícitos. Segundo, a diferencia de los nombres de las clases, estos comienzan con minúsculas y si también respetan camel case. Si agregamos varias palabras cada nueva palabra comienza la primera letra con mayúscula. Cada atributo debe tener un tipo de dato definido. Por ahora vamos a hablar simplemente de los datos primitivos que podemos encontrar en la mayoría de los lenguajes de programación orientados a objetos. Los enteros o int, los reales o double, los caraacteres o char, y las cadenas de caraceteres o string. Cuando vamos a modelar los atributos nos corresponde decidir cuál es el mejor tipo de dato para representar los valores que puede tomar un atributo. Y otros lenguajes pueden tener unos datos menos simples que son provistos para ayudarlos a ciertas representaciones más complejas, por ejemplo en el caso de las fechas, el tipo date nos ayuda a modelarlas evitando que nos preguntemos si usamos cadenas de caracteres o reales o enteros. En nuestro caso, nombre va a ser una cadena de caracteres, carnet va a ser un entero, y fecha de nacimiento va a ser un date. Finalmente los atributos tendrán una visibilidad que define si pueden ser vistos o usados por otras clases. Dentro de la misma clase no tiene mayor impacto, pero cuando empecemos a aumentar la complejidad de nuestros modelos y añadir relaciones y otras clases, esta decisión va a ser muy importante. Por ahora no hablaremos nuestros atributos como privados, esto es solo pueden ser vistos y usados por el mismo objeto. Lo opuesto sería modelarlos como públicos y permitir que cualquier otro objeto que conociera a los objetos que pertenece nuestra clase puedan usarlos o modificarlos. Los atributos privados los representamos con un símbolo menos. Si quisiéramos que fuesen públicos los representaríamos con un símbolo más. Recordemos entonces que los atributos no contienen valores, describen las propiedades pero son los objetos los que van a tener valores. Así que nuestro objeto estudiante podría tener en este caso un atributo cuyo nombre a a ser Juan, un código representado en su carnet que va a ser 1234 y 5 y una fecha de nacimiento que corresponde al primero de diciembre del 2000. Es importante notar que justamente los tipos de datos corresponden a los que definimos y no podemos por ejemplo darle a carnet un código alfanumérico porque está modelado como un entero. Eso lo vamos a escribir en nuestro diagrama de objetos. Y ahora tenemos un objeto que es instancia de nuestra clase estudiante, es decir que creamos a partir de nuestra clase y podemos crear cuantos queramos. Por ejemplo nuestro estudiante que llamaremos e1 representa a Juan. Pero podríamos tener un segundo objeto que vamos a llamar e2 que pertenece también a la clase estudiante y que va a representar a un estudiante que llamaremos María. Entonces en este caso su nombre va a ser María, su carnet podemos poner 11111 y su fecha de nacimiento va a ser igual al 5 de junio del 2000. Entonces, e1 que representa a Juan y e2 que representa a María son instancias diferentes de nuestra clase de estudiantes, cada una con valores diferentes en sus atributos. Con esto damos por terminada la lección. Pero aún hay tela que cortar. Quédate con nosotros, te invito a que hagas los ejercicios y que luego pases a la siguiente lección donde veremos enumeraciones y métodos para nuestras representaciones de diagramas de clases. [MÚSICA] [MÚSICA] [MÚSICA] [AUDIO_EN_BLANCO] [AUDIO_EN_BLANCO] [MÚSICA]