I. Sintaxis Básicas: 1. Tipos de Datos
I. Sintaxis Básicas: 1. Tipos de Datos
I. SINTAXIS BÁSICAS:
1. Tipos de datos:
1. Primitivos/Simples:
- Enteros: numérico, puede ser con signo (hace distinción de signo, solo positivos: sbyte, short, int, long)
o sin signo (no hace distinción entre positivo y negativo: byte, ushort, uint, ulong). Cada tipo tiene una
longitud diferente.
- Reales: numérico con decimales (float, double, decimal). Cada tipo tiene una longitud diferente.
- Utf-16/char: caracteres.
2. Estructuras: objeto (tipo básico de todos los objetos), string (arreglo de caracteres), dynamic.
3. Enumerados: Una enumeración o Enum, es un tipo de dato que nos permite crear una variable, que
define todos los posibles valores fijos que pueda contener. Un tipo de enumeración consiste en un
conjunto de constantes denominado lista de enumeradores.
Por referencia: se almacena una dirección en la memoria de ese tipo de referencia (c lass,record,
delegate, matriz o interface)
2. Variables:
Espacio en la memoria del ordenador (RAM) donde se almacenará un valor que podrá cambiar durante la ejecución
de un programa
Iniciar y declarar:
Buenas prácticas:
◦ Comenzar con letra minúscula, si la variable tiene más de una palabra se debe iniciar con mayúscula
(camelCase).
◦ No usar notación hungara: esta notación agrega la primera letra del tipo de dato usado.
3. Operadores Aritméticos:
Suma (+): sirve para sumar dos valores numéricos, para la concatenación de string y para operador de
incremento (++ para sumar una unidad a un valor numérico). También se puede conjugar con el “=” para
incrementar x unidades a un valor numérico +=5.
Resta (-): sirve para restar dos valores numéricos y para operador de decremento (- - para sumar una unidad
a un valor numérico). También se puede conjugar con el “=” para decrementar x unidades a un valor
numérico -=5.
Multiplicación (*)
Division (/)
Residuo/Modulo (%)
C# no permite la asignación de valores de diferentes tipos a una misma variable: Solamente almacena
valores del mismo tipo del valor con el que fue inicializada.
5. Conversiones:
Conversión explícita (casting): Se especifica entre parentesis y antes del nombre de la variable, el tipo de
dato al que se va a convertir.
temperaturaMadrid = (int)temperatura;
Conversión implícita: Se hace entre tipos de datos compatibles pero de diferente alcance. Por lo tanto no es
necesario hacer casting.
Sintaxis: tipo de dato numérico al que se va a convertir, seguido de la palabra Parse y entre parentesis la
variable de tipo texto que se va a convertir.
6. Constantes:
Espacio en la memoria del ordenador donde se almacenará un valor que no podrá cambiar durante la ejecución del
programa. Se diferencia de las variables porque su valor no cambia.
Declaración e inicialización:
Sintaxis: palabra reservada const + tipo de dato + nombre de la constante en MAYÚSCULA + valor inicial. Las
constantes debe inicializarse en la misma linea en la que se declaran.
Grupo de sentencias que realizan una tarea, que se agrupan dándole un nombre identificativo. Sirven para realizar
una tarea en concreto, en un momento determinado, siempre y cuando sea llamado.
1. Sintaxis:
Llamada: nombreMetodo(parametros).
2. Métodos void: métodos que no devuelven ningún valor (no llevan return), el tipo devuelto es void.
Cuando el método solo lleva una linea de return, se puede usar el operador de flecha con el valor que se va a
devolver. Esto se le llama expression-bodied
4. Ámbito/Alcance:
Todo lo que está dentro de la llave de apertura y de cierre de un método, se denomina “ámbito o alcance del
método”. Y todo lo que esté allí dentro tiene validez solo dentro del método. Las variables declaradas tienen ámbito
local.
Ámbito de clase: este ámbito lo obtienen las variables que son declaradas fuera de los métodos pero dentro
de una clase. También son definidas como “campos de clase”. Es posible usar dichas variables dentro de
métodos.
5. Sobrecarga de métodos: cuando tienes en el mismo ámbito dos o más metodos con el mismo nombre. Para que
esto suceda los métodos deben tener diferente tipo de parámetros o diferente número de parámetros.
int Suma(int parametro1, int parametro2, int parametro3) => parametro1 + parametro2
== Igual que
!= diferente que
&& Y lógico
|| O lógico
1. Condicional if:
sintaxis:
if (condicion)
else if (condicion)
else
2. Switch:
switch(expresion de control)
codigo a realizar
break;
default:
codigo a realizar
break;
3. Bucles: repetir un codigo un numero determinado/indeterminado de veces. Repetir código de forma clara y
sencilla.
Indeterminados:
codigo a repetir
- Do While: hacer mientras, funciona igual que el while excepto porque ejecuta el código aunque sea una vez
(asi la condición sea false). La condición va al final.
Comparación de string:
Numero random:
lo que va entre parentesis indica el rango del número aleatorio que queremos
V. Excepciones
Error en tiempo de ejecución que se escapa del programador: desbordamiento de pila, acceso a ficheros inexistente,
conexiones a bd interrumpidas.
Es necesario decirle al programa que debe hacer en caso de que se produzca una excepción.
FormatException Cuando se espera un número y se ingresa una letra ocurre una excepcion por formato
OverflowException Cuando se ingresa un número muy grande y ha sido declarado como int ocurre una
excepcion por overflow
Excepciones genericas: por encima de estos tipo esta el SystemException y por encima Exception.
Try {código que se intenta} catch (Exception ex) {ex.Message imprime la descripcion del error}
sintaxis checked{}
Sintaxis :
Finally: codigo que se ejecuta siempre, asi entre en el try o en el catch. Tiene que ver con BD o lectura de
ficheros externos. Por ejemplo cerrar la conexión de BD. Leer a pesar de que el programa caiga.
sintaxis:
VI. POO
1. Que es la POO: consiste en trasladar los objetos de la vida real a códigos de programación. Cada objeto de la vida
real tiene un estado, comportamiento, propiedades.
2. Modificadores de acceso: nos indican desde donde podemos acceder a cada clase.
3. Propiedades de la POO:
Clase: modelo donde se redacta las características comunes de un grupo de objeto. Plantilla.
Objeto: instancia de clase, derivan de una clase. Tienen propiedades (atributos) y comportamiento
(métodos).
Sintaxis:
Encapsulamiento: clases bloquean el acceso a su interior para que nadie en su exterior pueda ver su
funcionamiento. Proteger de accesos externos. No se pueda acceder a ella desde otra clase (al menos que sea
necesario).
Getter y Setter:
Uso de this: se utiliza para eliminar ambiguedades. Para diferenciar cuando se hace referencia a un campo de
clase y a un parametro (se usa para campo de clase).
this.climatizador = climatizador
Static:
Siempre pertenece a la clase donde fue declarada. Variables de clase. Un objeto no podrá actuar sobre una
variable de clase. Es la clase la que actúa sobre la variable. Si modifica su valor, modifica todas las instancias.
Para llamarlo se invoca el nombre de la clase.
indica que es una "variable de clase", es decir, que su valor es el mismo para todos los
objetos de la clase.
Para importar: para no mencionar siempre la clase se puede importar como un namespace.
Clase anónima:
sintaxis:
var miVariable = new {nombre = “Juan”}
IV. HERENCIA
Para reutilizar código, jerarquía. Principio de herencia “es-un”. Características y comportamientos comunes entre
entidades van en la cuspide.
1. Sintaxis:
2. Clase object: clase que está por encima de todas las clases por eso heredan sus métodos a todas las clases (Equials,
GetType, ToString)
3. Constructores: implícitamente las subclases obtienen constructor por defecto de clase padre. Se hace con la
instrucción :base.
5. Polimorfismo: cuando hay un método en clase padre que es llamado igual a un método de la clase hijo, invalida al
método heredado.
new: se agrega al método para quitar la advertencia de método repetido. new public void pensar()
virtual: se agrega al método del padre, indica que todas las subclases deben tener un método pensar que modifique
el método pensar. public virtual void pensar()
override: se agrega a la subclase para que sepa que es una sobre escritura del método padre.
6. Modificadores de acceso:
V. INTERFACES
Se debe agregar la interface como clase heredada: esto obliga a que se cumplan lo especificado en la interface
principio de obligatoriedad
Metodo abstracto: un metodo que solo está declarado no desarrollado. Los métodos abstractos tienen que
estar en clases abstractas.
Cuando declaramos una clase como abstract estamos indicado que esa clase va a ser utilizada como clase
base de otras clases, ya que ella misma no se puede instanciar.
Sintaxis:
Las clases que heredan están obligados a desarrollar los métodos que estén en la clase abstracta.
S – Principio de responsabilidad única (SRP): cada módulo de software debe tener una única razón para
cambiar
O – Principio abierto/cerrado: el código debería estar abierto para extenderlo y para añadirle nuevas
funcionalidades, pero en cambio debería estar cerrado a modificaciones, salvo las modificaciones que se
deban realizar si se encuentra algún error.
(OCP) L – Principio de sustitución de Liskov (LSP): una clase derivada debe poder ser sustituida por su clase
base.
I – Principio de Segregación de Interfaz (ISP): que dice que se han de utilizar interfaces con propósito
específicos o sea que tengan responsabilidades únicas y que se piensen bien y no se hagan interfaces
grandes.
D – Principio de Inversión de Dependencia (DIP): que para conseguirlo se hace uso de la inyección de
dependencias.