Fundamentos Básicos de Programación en C#
Tipos de Datos
-
Modificador: Se utilizan para controlar la visibilidad, accesibilidad y comportamiento de los miembros (campos, métodos, propiedades, etc.) en clases y estructuras.
- Modificador de acceso: Controla quién puede acceder y modificar los miembros de una clase o estructura.
- Ejemplos:
public
,private
,protected
,internal
- Ejemplos:
- Modificador de comportamiento (herencia y polimorfismo): Afectan cómo los miembros interactúan en relación con la herencia y la implementación de métodos en clases derivadas.
- Ejemplos:
virtual
,abstract
,override
- Ejemplos:
- Modificador de acceso: Controla quién puede acceder y modificar los miembros de una clase o estructura.
-
Clase: Es un tipo de dato que define un conjunto de propiedades, métodos y eventos. Sirve como plantilla para la creación de objetos, determinando la estructura y el comportamiento de las instancias.
- Ejemplos:
Object
,String
,Console
,Math
,DateTime
,FileStream
,HttpClient
,SqlConnection
,StreamWriter
,StreamReader
,XmlDocument
,XmlReader
,XmlWriter
- Ejemplos:
-
Objeto: Es una instancia de una clase. Creado a partir de la plantilla definida por la clase, representa una entidad del mundo real en el software. Un objeto tiene un estado (determinado por sus propiedades) y puede realizar acciones (determinadas por sus métodos).
-
Tipos de Datos en Memoria:
-
Variables:
- De Valor: Almacenan valores directamente, como tipos numéricos (
int, float, double, decimal
),char
,string
,bool
. - Por Referencia: Almacenan una referencia a la ubicación de los datos en lugar de los datos reales. Incluye clases, delegados, objetos y arrays.
- Colección o Lista: Estructura de datos que permite almacenar y manipular un conjunto de elementos.
- No genéricas: ArrayList, Hashtable, Queue, Stack
- Genéricas: List
, Dictionary<TKey, TValue>, Queue , Stack , HashSet , LinkedList - Colecciones Concurrentes: ConcurrentDictionary<TKey, TValue>, ConcurrentQueue
, ConcurrentStack , BlockingCollection .
- De Valor: Almacenan valores directamente, como tipos numéricos (
-
Constantes: Valores que no cambian durante la ejecución del programa. Ejemplos incluyen
double.NegativeInfinity
,double.PositiveInfinity
,double.NaN
,Math.PI
,int.MaxValue
,int.MinValue
,double.Epsilon
,char.MaxValue
,char.MinValue
,string.Empty
.
-
-
Operadores:
- Aritméticos:
+, -, *, /, %
- Lógicos:
==, !=, &&, ||, !
- De Comparación:
==, !=, <, >, <=, >=
- Aritméticos:
-
Estructuras de Control de Flujo: Mecanismos que dirigen el flujo de ejecución del programa, como
if, else, switch, while, do while, for, foreach
. O de forma no estructurada:continue
,break
,goto
,return
. -
Programación Orientada a Objetos (POO): La Programación Orientada a Objetos (POO) se basa en cuatro conceptos fundamentales que trabajan en conjunto para crear sistemas de software modulares, flexibles y fáciles de mantener:
-
Encapsulación: Este principio consiste en ocultar los detalles internos de implementación de un objeto y exponer solo las operaciones permitidas. Se logra definiendo los miembros de una clase con diferentes niveles de visibilidad. Las formas de encapsulación incluyen propiedades y métodos de clase, propiedades y métodos privados, propiedades auto-implementadas, miembros con expresión de cuerpo, propiedades con un campo de respaldo y propiedades de solo lectura.
-
Herencia: Permite que una clase herede los atributos y métodos de otra clase, promoviendo así la reutilización del código y la creación de jerarquías de clases. Por ejemplo, una clase
Animal
puede tener subclases comoPerro
yGato
, heredando atributos y comportamientos comunes de la claseAnimal
. -
Polimorfismo: Este concepto permite que objetos de diferentes clases respondan al mismo mensaje de manera diferente. Se puede lograr mediante sobrecarga de métodos, que implica definir múltiples métodos con el mismo nombre pero diferentes parámetros, y sobrescritura de métodos, que permite a las subclases proporcionar su propia implementación de un método heredado. El polimorfismo promueve la reutilización del código y facilita la extensibilidad del sistema.
-
Abstracción: Es el proceso de identificar las características esenciales de un objeto y omitir los detalles irrelevantes. Permite modelar objetos del mundo real como clases con atributos y métodos que representan las características y comportamientos importantes, respectivamente. Por ejemplo, en un sistema de gestión de bibliotecas, podríamos tener una clase
Libro
con atributos comotítulo
,autor
yaño de publicación
, abstrayendo los detalles específicos de cada libro individual.
-
Además de estos cuatro conceptos, también existen las interfaces, que son conjuntos de métodos que una clase debe implementar, especificando un contrato que las clases deben seguir, pero sin contener ninguna implementación real de esos métodos. Por ejemplo, una interfaz IVolador
podría tener un método volar()
, que sería implementado por clases como Ave
y Avión
.
-
Manejo de Código:
- Métodos y Funciones: Definición y llamado de funciones para organizar el código.
- Delegados y Eventos: Facilitan la comunicación entre objetos.
- Atributos: Proporcionan metadatos adicionales en tiempo de compilación.
- Manejo de Excepciones:
try, catch, finally
para gestionar errores.
-
Características Avanzadas:
- LINQ (Language Integrated Query): Consultas en colecciones de datos.
- Expresiones Lambda: Forma concisa de escribir funciones anónimas.
- Programación Asíncrona: Uso de
Async
yAwait
para escribir código asincrónico.
Métodos y clases del espacio de nombres System
Class: method