Curso de C#
Curso de C#
Curso de C#
¿Qué es C# (C sharp)?
• C# es un lenguaje de programación, cuya sintaxis básica deriva de C/C++,
desarrollado y estandarizado por Microsoft. Utiliza el modelo de objetos
de la plataforma .NET y se asemeja mucho a lenguajes de alto nivel como
Java y JavaScript, aunque incluye mejoras derivadas de otros lenguajes.
• Se caracteriza sobre todo por ser un lenguaje de programación orientada a
objetos (POO) bastante polivalente y que mantiene la potencia de su
antecesor, C++, permitiendo el acceso a bajo nivel al núcleo de los
sistemas operativos, el trabajo con punteros e incluso la interacción con
elementos físicos de los dispositivos.
Palabra reservada var
• La palabra clave var en C# se utiliza para declarar variables locales de
manera implícita. Esto significa que el tipo de dato de la variable se
infiere automáticamente por el compilador en función del valor que se le
asigna en el momento de la declaración.
Operadores lógicos
• Estos operadores se utilizan es para comprar expresiones:
• Operador AND (&&): Este operador devuelve true si ambas expresiones
booleanas que conecta son verdaderas. Si al menos una de las expresiones
es falsa, el resultado es false.
• Operador OR (||): Este operador devuelve true si al menos una de las
expresiones booleanas que conecta es verdadera. Solo devuelve false si
ambas expresiones son falsas.
• Operador NOT (!): Este operador cambia el valor de verdad de una
expresión booleana. Si la expresión es verdadera, ! la hará falsa, y
viceversa.
• Operador XOR (^): Este operador devuelve true si exactamente una de las
expresiones booleanas que conecta es verdadera y la otra es falsa. Si
ambas expresiones son verdaderas o ambas son falsas, devuelve false.
• Operador de igualdad (==): Se utiliza para verificar si dos expresiones son
iguales en valor. Devuelve true si las expresiones son iguales y false en
caso contrario.
• Operador de desigualdad (!=): Se utiliza para verificar si dos expresiones
son diferentes en valor. Devuelve true si las expresiones son diferentes y
false si son iguales.
Concatenar en c#
• Dos formas para concatenar:
Condicionales if, else, else if
Condicional Switch
Ciclos While y Do While
Ciclo For
Ejercicio 1: Contador de números pares e
impares
• Solicita al usuario ingresar un número entero positivo y luego cuenta la
cantidad de números pares e impares desde 1 hasta ese número. Utiliza un
bucle for para esto.
Ejercicio 2: Calculadora avanzada
• Desarrolla una calculadora que permita al usuario realizar operaciones
matemáticas básicas (+, -, *, /). Pide al usuario que ingrese dos números y
la operación deseada. Utiliza un bucle while para permitir que el usuario
realice varias operaciones.
Ejercicio 3: Juego de adivinar número
• Crea un juego en el que tú vas a poner un numero aleatorio del 1 al 100, y
el usuario debe adivinarlo. La computadora debe dar pistas indicando si el
número ingresado es mayor o menor al número aleatorio.
Ejercicio 4: Tabla de multiplicar
• Solicita al usuario ingresar un número y muestra su tabla de multiplicar
del 1 al 10 utilizando.
POO
• La programación orientada a objetos (POO) es un paradigma de
programación que se basa en el concepto de "objetos". Los objetos son
entidades que representan elementos del mundo real o conceptos
abstractos y que tienen propiedades y comportamientos asociados. La
POO se utiliza para modelar sistemas y resolver problemas de manera más
organizada y modular.
• Paradigma de la programación: formas o estilos en los que podemos
programar y estructurar nuestro código.
Conceptos fundamentales
• Clase: Una clase es una plantilla o un plano para crear objetos. Define las
propiedades (también llamadas atributos) y los métodos (funciones) que
los objetos creados a partir de la clase tendrán. Las clases son la base para
crear objetos en POO.
• Objeto: Un objeto es una instancia concreta de una clase. Representa un
elemento del mundo real o un concepto abstracto y encapsula datos
(propiedades) y comportamiento (métodos) relacionados con ese objeto.
• Atributos: Los atributos son variables que se definen en una clase y
representan las características o propiedades de los objetos creados a partir
de esa clase. Por ejemplo, si tienes una clase Coche, los atributos podrían
ser marca, modelo, color, etc.
• Métodos: Los métodos son funciones definidas en una clase que
describen el comportamiento de los objetos de esa clase. Los métodos
permiten a los objetos realizar acciones o responder a eventos. Por
ejemplo, en una clase Coche, podrías tener métodos como acelerar(),
frenar(), girar(), etc.
• Encapsulación: La encapsulación es un principio de POO que implica
ocultar los detalles internos de una clase y proporcionar una interfaz
pública para interactuar con los objetos. Esto se logra mediante el uso de
modificadores de acceso como public, private y protected para controlar el
acceso a los atributos y métodos de una clase.
• Herencia: La herencia es un mecanismo que permite que una clase
(llamada clase derivada o subclase) herede propiedades y métodos de otra
clase (llamada clase base o superclase). Esto facilita la reutilización de
código y la creación de jerarquías de clases.
• Polimorfismo: El polimorfismo es la capacidad de los objetos de
diferentes clases de responder a un mismo mensaje o método de manera
diferente. Esto permite escribir código más genérico y flexible, ya que un
objeto puede comportarse de diferentes maneras según su tipo concreto.
• Abstracción: La abstracción es el proceso de simplificar y modelar
objetos del mundo real en términos de sus propiedades y comportamientos
esenciales, ignorando los detalles irrelevantes. Las clases y objetos son
ejemplos de abstracción, ya que representan una entidad en términos de
sus características más importantes.
• La programación orientada a objetos se utiliza ampliamente en el
desarrollo de software porque proporciona una forma efectiva de
organizar y estructurar el código, facilita la reutilización y el
mantenimiento, y permite modelar problemas de manera más natural.
Nuestra primera clase y objeto
• La palabra clave new es
fundamental para crear
objetos y asignar memoria
en C# y se utiliza en
diferentes contextos para
instanciar tipos de datos de
referencia y llamar a
constructores.
Análisis del paradigma
• Queremos ahorrar código, hay
que hacer un análisis más
general.
Objetos dentro de objetos
Constructor y datos iniciales en una clase
• Un constructor es un método especial en una clase que se utiliza para
inicializar los objetos creados a partir de esa clase. Su función principal es
preparar el objeto para su uso, asignando valores iniciales a sus
propiedades y realizando cualquier configuración necesaria. Los
constructores se ejecutan automáticamente cuando se crea un nuevo
objeto de la clase y pueden tener parámetros para personalizar la
inicialización del objeto. En resumen, un constructor es como un
"constructor" de objetos que establece su estado inicial.
Métodos dentro de una clase
• Modificador de Acceso: Define la visibilidad y accesibilidad del método.
Puede ser public, private, protected, internal, entre otros. Determina desde
dónde se puede llamar al método.
• Tipo de Retorno: Especifica el tipo de dato que el método devolverá
como resultado después de su ejecución. Puede ser cualquier tipo válido
en C#, incluyendo tipos primitivos (como int, string, etc.) o tipos
personalizados (clases, estructuras, etc.). Si el método no devuelve ningún
valor, se utiliza void.
• Nombre del Método: Es el nombre que se le da al método. Debe seguir
las reglas de nomenclatura de identificadores en C# y dar una idea clara de
lo que hace el método.
• Parámetros (Opcionales): Los parámetros son valores que se pasan al
método para que pueda realizar su trabajo. Puedes especificar cero o más
parámetros, cada uno con su tipo y nombre. Por ejemplo, int Sumar(int a,
int b) tiene dos parámetros a y b de tipo int.
• Cuerpo del Método: Aquí es donde se coloca el código que define lo que
hace el método. El cuerpo del método contiene instrucciones y lógica que
se ejecutarán cuando el método sea llamado. Esto puede incluir
declaraciones de variables, estructuras de control (como if, for, etc.) y
llamadas a otros métodos.
Invocar un método dentro de una clase
• necesitas crear una instancia (objeto) de la clase y luego usar esa instancia
para acceder al método y ejecutarlo. La invocación de métodos permite
ejecutar código encapsulado y realizar acciones específicas dentro del
contexto de la clase.
Modificadores de acceso
• Los modificadores de acceso son palabras clave que determinan la
visibilidad y accesibilidad de clases, métodos y propiedades en C#.
Ayudan a controlar quién puede acceder y modificar estos elementos en el
código.
• public: Los miembros públicos son accesibles desde cualquier parte del
programa. Pueden ser utilizados por otras clases y componentes externos.
• Ejemplo: public class MiClase { ... }
• private: Los miembros privados son accesibles solo desde dentro de la
misma clase. No se pueden acceder desde fuera de la clase.
• Ejemplo: private int edad;
• protected: Los miembros protegidos son accesibles desde dentro de la
misma clase y sus subclases (herencia). No son visibles desde fuera.
• Ejemplo: protected void MetodoProtegido() { ... }
• internal: Los miembros internos son accesibles dentro del mismo
ensamblado (assembly). Esto permite el acceso dentro de un conjunto de
clases relacionadas.
• Ejemplo: internal class ClaseInterna { ... }
Crear clases por separado en código
Encapsulamiento
• El encapsulamiento es un principio fundamental de la programación
orientada a objetos que consiste en ocultar el estado interno de un objeto y
restringir el acceso directo a sus datos internos. Esto se logra utilizando
modificadores de acceso y proporcionando métodos públicos para
interactuar con los datos internos de un objeto.
Beneficios del Encapsulamiento
• Seguridad: Evita que los datos internos de un objeto sean modificados de
manera no autorizada o incorrecta.
• Modularidad: Facilita la modificación interna de una clase sin afectar
otras partes del programa que utilizan la clase.
• Control: Permite definir reglas y validaciones para la manipulación de
datos.
• Abstracción: Los detalles de implementación se ocultan, lo que
simplifica el uso de una clase.
Convenciones de nomenclatura
• Use PascalCase para los nombres de clase y los nombres de método (public).
• Use camelCase para los argumentos de método, las variables locales y los campos privados.
• Use PascalCase para los nombres de las constantes, tanto campos como constantes locales.
• { get; set; }: Esta es la parte clave que hace que la propiedad sea auto-
implementada. El compilador genera automáticamente el código necesario
detrás de escena para obtener (get) y establecer (set) valores.
• Ventajas de las Propiedades Auto-implementadas:
• Sintaxis Concisa: Las propiedades auto-implementadas permiten definir
propiedades con menos código en comparación con la creación de campos
privados y métodos get y set personalizados.
• Encapsulación: Aunque las propiedades auto-implementadas parecen
campos públicos, el compilador genera métodos get y set implícitos, lo que
permite mantener la encapsulación y control sobre los valores almacenados
en la propiedad.
• Flexibilidad Futura: Si en el futuro se necesita agregar lógica personalizada
en los métodos get o set, es posible hacerlo sin cambiar la interfaz pública de
la clase. Esto se conoce como "propiedad auto-implementada con cuerpo" y
es una forma de evolucionar la propiedad según las necesidades cambiantes.
• Cuando necesitas agregar validaciones o lógica personalizada al establecer
(set) el valor de una propiedad, puedes utilizar propiedades auto-
implementadas con cuerpo. Esta es una característica de C# que te permite
agregar código dentro del cuerpo del set para realizar validaciones o
acciones específicas. Veamos cómo se hace:
Ejercicio 13: Simulador de banco
• Implementa un simulador de banco que permita a los usuarios realizar
operaciones bancarias con cuentas corrientes.
• Requisitos:
• El programa debe permitir al usuario crear cuentas corrientes.
• El programa debe permitir al usuario realizar depósitos en cuentas corrientes.
• El programa debe permitir al usuario realizar retiros de cuentas corrientes.
• El programa debe permitir al usuario consultar el saldo de cuentas corrientes.
• Detalles:
• Las cuentas corrientes deben tener un número de cuenta, un saldo y un
titular.
• Los depósitos deben ser positivos.
• Los retiros deben ser menores o iguales al saldo de la cuenta.
• Las consultas de saldo deben devolver el saldo actual de la cuenta.
Variables y métodos static
• Las variables estáticas son aquellas que pertenecen a la clase en lugar de a
una instancia específica de la clase. Esto significa que solo existe una
copia de la variable en toda la clase.
Acceso a Variables Estáticas
• Las variables estáticas se pueden acceder utilizando el nombre de la clase,
seguido de un punto y el nombre de la variable.
• Los métodos estáticos son métodos que pertenecen a la clase en lugar de a
una instancia específica. Pueden ser invocados sin crear una instancia de
la clase.
• Pueden ser, por ejemplo, los métodos para obtener los valores de esas
variables estáticas
Acceso a Métodos Estáticos
• Los métodos estáticos se pueden invocar utilizando el nombre de la clase,
seguido de un punto y el nombre del método.
Beneficios de Variables y Métodos Estáticos: