Notizen
Clases y Objetos

Inhalt der Notizen (5)
Seite 1
Instancia: Una instancia es la particularización, realización específica u ocurrencia de una determinada clase, entidad o prototipo. En los lenguajes de programación orientada a objetos un objeto es una instancia de una clase.
A. CLASES, OBJETOS, MÉTODOS, ACCIONES Y ATRIBUTOS
1. ¿Qué puede ser descrito como un objeto?
Todo puede ser descrito como un objeto, con ciertas características y métodos, por ejemplo:
Toda escuela tiene un nombre, una ubicación, un tipo, esas serian sus características. Mientras que sus métodos pueden ser iniciar clases, terminar clases, sonar el timbre, etc.
2. Un objeto NO es una clase.
La clase es la descripción de un objeto, pero no el objeto, más bien es una plantilla para crear objetos.
3. Objetos
Un objeto es una cosa tangible, algo a que se puede aprehender intelectualmente o algo hacia lo que se puede dirigir una acción o pensamiento.
Un objeto representa un item individual e identificable, o una entidad real o abstracta, con un papel definido en el dominio del problema.
Un objeto tiene:
− Estado
− Comportamiento
− Identidad
La estructura y el comportamiento de objetos similares se definen en sus clases comunes.
El término objeto y ejemplo (instance) de una clase son intercambiables.
4. Clases
Una clase es un conjunto de objetos que comparten una estructura y comportamiento comunes.
Clase representa una abstracción, la esencia que comparten los objetos.
Un objeto es un ejemplo de una clase.
Un objeto no es una clase, y una clase no es un objeto (aunque puede serlo, p.e. en Smalltalk).
Las clases actúan como intermediarias entre una abstracción y los clientes que pretenden utilizar la abstracción.
De esta forma, la clase muestra:
visión externa de comportamiento (interface), que enfatiza la abstracción escondiendo su estructura y secretos de comportamiento.
visión interna (implementación), que abarca el código que se ofrece en la interface de la clase.

Seite 2
Cuando ejecutamos el programa nos muestra lo que esta dentro de este método que es hello Word porque por concepción el método Main es el primero que se ejecuta en un programa
Hemos aprendido:
Que son los objetos y las clases y sus diferencias. Clase = Planos , Objeto = Casa.
Estructura Basic de Clase => Atributos y Metodos(o funciones).
Tipos de acceso: Private y/o Protected (son parecidos) (son los valores default de los atributos y metodos de una clase) , y Public.
Como instanciar un Objeto, tipos de datos basicos : int, string…
La Funcion .Beep (frecuenciasonido, TiempoMilisegundos).
Como usar atributos y objetos de un clase.

Seite 3
Proyecto
Queremos Administrar una escuela pequeña.
Manejar los alumnos de cada grado.
Controlar sus asignaturas.
Controlar sus evaluaciones.
Elaborar informes.
Encapsulamiento: poder ponerle un embotorio a los atributos que me permita agregar lógica en el futuro sin que tener que cambiar anda más dentro de la solución. Definición del nivel de acceso sobre atributos de una clase, sirve para controlar la seguridad de nuestras estructuras de datos y su información; los metodos de asignación y consulta de información para cada atributo generalmete se conocen como Getters y Setters respectivamente.
Niveles de acceso:
Public: acceso desde cualquier parte de codigo desde donde se instancie la clase.
Private: solo la clase dueña del atributo o método puede hacer uso de éstos.
Protected: solo la clase dueña del atributo o método y sus hijos [Herencia], pueden hacer uso de éstos.
Constructor de clase: se debe declarar despues de la definición de atributos, debe tener el mismo nombre de la clase y es quien obliga o exige que parametros y acciones se hacen al momento de instanciar un objeto de su tipo.
Se recomienda no usar public en los atributos de clase por lo mencionado anteriormente. Por esto se crea el atributo y se encapsula, se proteje dentro de una propiedad que harémos pública para pueda ser accesible desde fuera de la clase. La propiedad debe tener el mismo tipo de dato que el atributo.Por convencion el atributo se pone en mayuscula y la propiedad en camel case.
Cuando alguien desde fuera de la clase quiera asignarle un valor desde fuera de la propiedad le asignaremos el valor al atributo name y cuando se quiera consultar la propiedad se va a mostrar el atributo.
Ej. de uso, desde fuera de la clase me mandan un nombre en minuscula pero yo por mi lógica he decidido que todos los atributos nombre se almacenen en mayuscula, entonces en la propiedad haría lo siguiente:
set { nombre = value.toUpper(); }
// value es una palabra reservada para contener el valor que se le pasa al setter
O para devolver el valor puedo concatenar otro valor que le anteceda, todo depende de las necesidad del neogico (req propios de la aplicación).
Namespace: nos sirve para facilitar el encontrar objetos en nuestro proyecto, además de darle un orden al código lo que hace es que separa funcionalidades. Por ejemplo si se tienen dos proyectos y dentro de estos hay métodos que se llaman de igual manera pueden presentar un choque. Los nombres de espacios permiten eliminar esto.
Mayús. + Alt + F = dar formato al documento (texto)
Ctrl + K + S = ver lista completa de atajos de teclado (lo compartió @danrmrz en una clase anterior)
A diferencia de otros lenguajes en C# no importa que el nombre de archivo coincida con el nombre de la clase.
Una forma resumida de crear una propiedad para encapsular un atributo es esta
public int AñoCreación { get; set; }
al copilar el código por detras crea un atributoprivado y el getter y setter publico para acceder a este atributo, esta es la forma corta de declararlo
El constructor lo puedo crear de varias formas, una de ellas es
public Escuela(string nombre, int año)
{
this.nombre = nombre;
AñoCreación = año;
}
entonces cuando creo una instancia de la clase Escuela le debo pasar como parámetros el nombre y el año. El IDE me mostrará como erro si no le paso parametros.
Otra forma de crear el constructor es por tuplas, empleando las propiedades que encapsulan a estos atributos
public Escuela(string nombre, int año)
=> (Nombre, AñoCreación) = (nombre, año);
Esto es bastante usado en los lenguajes funcionales
Seite 4
Uso de numeración y ToString
Enumeraciones: Se usans para reducir el riesgo de error, se debe definir el tipo de la propiedad que se utilice en la clase para llamar a estas opcion como el tipo de datos del enum, con el fin de reducir las opciones que nos puede brindar el programador.
ToString: Por defecto todas las clases son objetos, por lo tanto heredan de la clase objeto, esta viene con un metodo ToString que te muestra la ruta total de la clase que llamas, como por ejemplo
CoreEscuela.Entidades.Escuela //NAMESPACE.CLASE
Entonces lo que vamos a hacer es sobreescribir este método del padre de la siguiente forma
public override string ToString()
{
return $"Nombre: {Nombre}, Tipo: {TipoEscuela}"
+ $"\nPais: {Pais}, Ciudad: {Ciudad}";
}
Ahora cuando llamemos ToString de una instancia de la clase escuela se imprimiran los valores puesto en el metodo sobreescrito con override
Seite 5
Creación de parámetros
Se puede tener más de un constructor con diferentes parámetros de inicialización, siendo que algunos de estos parámetros se pueden colocar de manera opcional. Puedo crear tantos constructores como se requieran para soluciones las necesidad que se tengan en mi aplicación
Los parametros opcionales se colocan asignandoles un valor por defecto desde su llamada es decir
public Escuela(string nombre, string pais = ""){}
En este caso el constructor de la clase Escuela tiene cmo parametro obligatorio de inicialización el nombre, pero el de país es opcional y en caso de no pasarse ningun valor para este campo tendrá el valor por defecto de un string vacío.
Para la asignación de valores dentro del constructor tambien podemos utilizar asignación por tuplas
(Nombre, AñoCreación) = (nombre, año);
y los valores se asignan en el orden establecido por la primera tupla
en el caso de tener un parámetro opcional como en el caso de país, se asigna de igual forma el valor por defecto o el que se estuviese pasando en el constructor
public Escuela(string nombre, string pais = "")
{
this.nombre = nombre;
Pais = pais;
}
En caso no se haya creado atributo para país sino que se haya usado la forma corta de una propiedad con getters y setter, no se puede hacer una asignación al nombre de un atributo con el mismo nombre usando this, como en el caso de nombre, sino que se tiene que asignar directamente a la propiedad.
A la hora de llamar al constructor, en el caso de los parametros opcionales, se puede hacer lo siguiente
var escuela = new Escuela(
"Colegio Arguedas", 1975,
TiposEscuela.PreEscolar, ciudad:"Lima");
podemos observar que se indica el nombre del atributo al que queremos asignar el valor con ciudad:"Lima"; sin embargo, a la hora de crear el constructor el parametro opcional país iba antes que ciudad, por lo que de este podemos asignar valores a los parámetros sin que el orden influya en la asignación de los mismos.
Las listas se separan por "," y puedo cambiar de lineas cuantas veces quiera igual mientras no existe un ";" que separa una instrucción, se seguira con la lista
("perro",
"gato",
"raton")
es igual que
("perro","gato","raton")
Si quiero incluir comillas o algun caracter especial dentro de un string me puedo valer del "\"
string text = "Hola \"Pedro\" como estas"
que será igual a
Hola "Pedro" como estas
Para el salto de línea en un string utilizamos el \n dentro de la cadena de texto, pero este es el salto de línea para windows, si queremos hacerlo compatible con cualquier plataforma donde corra reemplazamos el \n por un
{System.Environment.NewLine}
Informationen
- Beschreibung
- Notiz am Clases y Objetos, erstellt von Juan Silva am 21/07/2019.
- Erstellt von
- Juan Silva
- Aufrufe
- 0
- Bewertung