Está en la página 1de 8

Tarea #1

C#
Es un lenguaje de programación diseñado por Microsoft. Es un componente fundamental de
la plataforma .NET de Microsoft y se utiliza principalmente para desarrollar aplicaciones de
escritorio, aplicaciones web, juegos y software empresarial.
Algunas características importantes de C# incluyen:
Orientación a Objetos: C# es un lenguaje de programación orientado a objetos, lo que
significa que se organiza alrededor de objetos y clases que representan conceptos del
mundo real.
Tipado Estático: C# es un lenguaje estático, lo que significa que los tipos de datos deben ser
declarados explícitamente antes de su uso.
Multiplataforma: Aunque C# fue inicialmente diseñado para el ecosistema Windows, con el
tiempo Microsoft ha desarrollado versiones multiplataforma del lenguaje y del entorno de
ejecución, permitiendo a los desarrolladores crear aplicaciones que se ejecutan en sistemas
operativos diferentes, como Windows, macOS y Linux.
Integración con .NET: C# está estrechamente ligado a la plataforma .NET, que proporciona un
amplio conjunto de bibliotecas y herramientas para el desarrollo de aplicaciones.
Seguridad y Control de Memoria: C# cuenta con un recolector de basura (garbagecollector)
que gestiona automáticamente la liberación de memoria, lo que ayuda a prevenir fugas de
memoria y errores relacionados.
Sintaxis Familiar: La sintaxis de C# está inspirada en C y C++, por lo que si tienes experiencia
con estos lenguajes, encontrarás muchas similitudes.
Amplia Comunidad y Ecosistema: C# cuenta con una comunidad activa de desarrolladores y
una gran cantidad de recursos en línea, incluyendo tutoriales, foros y bibliotecas de código
abierto.
Que es .NET
Es una plataforma de desarrollo de software creada por Microsoft. Proporciona un entorno
y una serie de herramientas que permiten a los programadores crear variedad de
aplicaciones, desde aplicaciones de escritorio hasta aplicaciones web y servicios en la nube.
La plataforma .NET consta de varios componentes esenciales:
Common Language Runtime: Es el entorno de ejecución que gestiona la ejecución de
código .NET. Proporciona características como la administración de memoria, la recolección
de basura y la administración de hilos, entre otros.
Biblioteca de Clases .NET (Framework Class Library): Es una colección extensa de clases,
interfaces y métodos que los desarrolladores pueden utilizar para realizar tareas comunes,
como manipular cadenas, trabajar con archivos y directorios, realizar operaciones de red,
etc.
Lenguajes de Programación: .NET es compatible con varios lenguajes de programación,
incluyendo C#, VB.NET y otros. Esto significa que los desarrolladores pueden elegir el
lenguaje que mejor se adapte a sus necesidades y preferencias, pero todos comparten la
misma infraestructura y bibliotecas.
Herramientas de Desarrollo: Microsoft proporciona un conjunto de herramientas de
desarrollo integradas (como Visual Studio y Visual Studio Code) que facilitan la creación,
depuración y mantenimiento de aplicaciones .NET.
ASP.NET y Windows Forms: ASP.NET es un marco para desarrollar aplicaciones web y
servicios en la plataforma .NET. Windows Forms es un marco para construir aplicaciones de
escritorio basadas en ventanas.
Azure y Servicios en la Nube: .NET se integra estrechamente con los servicios en la nube de
Microsoft a través de Azure, lo que permite a los desarrolladores construir y desplegar
aplicaciones en la nube de manera eficiente.
Datos primitivos en c#
byte: Representa números enteros sin signo de 8 bits (0 a 255).
sbyte: Representa números enteros con signo de 8 bits (-128 a 127).
short: Representa números enteros con signo de 16 bits (-32,768 a 32,767).
ushort: Representa números enteros sin signo de 16 bits (0 a 65,535).
int: Representa números enteros con signo de 32 bits (-2,147,483,648 a 2,147,483,647).
uint: Representa números enteros sin signo de 32 bits (0 a 4,294,967,295).
long: Representa números enteros con signo de 64 bits (-9,223,372,036,854,775,808 a
9,223,372,036,854,775,807).
ulong: Representa números enteros sin signo de 64 bits (0 a 18,446,744,073,709,551,615).
Tipos Numéricos de Punto Flotante:
float: Representa números de punto flotante de precisión simple de 32 bits.
double: Representa números de punto flotante de precisión doble de 64 bits.
decimal: Representa números de punto flotante de alta precisión y rango extendido.
Tipo Caracter:
char: Representa un único carácter Unicode (16 bits).
Tipo Booleano:
bool: Representa un valor booleano, que puede ser true (verdadero) o false (falso).
Tipo Cadena:
string: Representa una secuencia de caracteres Unicode.
Tipo Objeto Nulo:
null: Representa una referencia nula a un objeto. Es utilizado para indicar que una variable
no apunta a ningún objeto en particular.
Que es un dato pasado por referencia y por valor
En programación, cuando pasas un dato a una función o método, este puede hacerlo de dos
maneras: por valor o por referencia. Estas dos formas de pasar datos determinan cómo se
manipulan y almacenan en la memoria durante la ejecución del programa.
datos son por defectos pasados por referencia y cuales por valor
Los tipos de datos primitivos y estructuras son pasados por valor por defecto.
Esto incluye tipos como int, double, char, bool, así como las estructuras que defines, como
struct.
Que es una clase
En programación, una clase es una plantilla o un plano para crear objetos. Representa un
conjunto de propiedades y métodos que definen el comportamiento y las características de
los objetos que se pueden crear a partir de ella. Las clases son uno de los conceptos
fundamentales de la programación orientada a objetos (OOP).
Una clase puede contener:
Atributos (o Propiedades): Representan las características o datos que describen el estado
de un objeto. Por ejemplo, en una clase "Persona", los atributos podrían ser el nombre, la
edad, el género, etc.
Métodos: Representan las acciones o funciones que un objeto puede realizar. Estos métodos
pueden interactuar con los atributos de la clase y realizar operaciones específicas. Por
ejemplo, en una clase "Persona", los métodos podrían ser "caminar", "hablar", "comer", etc.
Constructores: Son métodos especiales que se utilizan para inicializar un objeto cuando se
crea una instancia de la clase. Permiten asignar valores iniciales a los atributos.
Destructor (opcional): Es un método especial que se ejecuta cuando un objeto es destruido
o liberado de la memoria.
que es una propiedad
En programación, una propiedad es un miembro de una clase que proporciona una forma de
acceder y modificar el estado interno (los atributos) de un objeto. Es una forma de
encapsular el acceso a los datos de un objeto y permitir cierto nivel de control sobre cómo
se obtienen y establecen esos datos.
Las propiedades son una parte importante de la programación orientada a objetos (OOP) y
se utilizan para mantener la integridad de los datos y facilitar la interacción con objetos.
En términos más sencillos, puedes pensar en una propiedad como una especie de "puente"
que te permite interactuar con los datos de una clase de manera controlada. Una propiedad
tiene un nombre, un tipo de dato y puede tener un método de acceso que define cómo se
puede leer o escribir el valor asociado.
Cuáles son los pilares de la programación orientada a objeto (POO)
La programación orientada a objetos (POO) se basa en cuatro pilares fundamentales que
guían la forma en que se estructuran y se organizan los programas. Estos pilares son:
Abstracción:
La abstracción consiste en identificar las características y comportamientos esenciales de un
objeto del mundo real y representarlos en el código de manera simplificada.
Permite centrarse en los detalles relevantes y ocultar los detalles complejos o menos
importantes. Por ejemplo, en una clase "Coche", la abstracción podría incluir características
como el modelo, la marca y el color, así como comportamientos como arrancar, detenerse y
acelerar.
Encapsulamiento:
El encapsulamiento es el principio que sugiere que los datos (atributos) y las operaciones
(métodos) que trabajan en esos datos deben estar encapsulados juntos en una unidad
llamada clase.
Los atributos de una clase deben ser privados y solo deben ser accesibles y modificables a
través de métodos de la clase (usualmente llamados getters y setters). Esto proporciona un
nivel de protección y control sobre los datos.
Herencia:
La herencia permite que una clase (llamada subclase o clase derivada) herede los atributos y
métodos de otra clase (llamada superclase o clase base).
Esto fomenta la reutilización del código, ya que las subclases pueden extender o modificar el
comportamiento de la clase base y, al mismo tiempo, heredar sus características
fundamentales.
Polimorfismo:
El polimorfismo se refiere a la capacidad de una clase para presentar la misma interfaz para
diferentes tipos de datos.
Esto permite que un método o función pueda comportarse de manera diferente según el
tipo de objeto que lo llama. Por ejemplo, si una función espera un objeto de tipo "Animal",
puede trabajar con objetos de subclases como "Perro", "Gato", etc., sin necesidad de saber
el tipo específico en tiempo de compilación.
que es encapsulamiento?
El encapsulamiento es uno de los cuatro pilares fundamentales de la programación
orientada a objetos (POO) y se refiere al principio de organizar el código en unidades
llamadas clases, donde los datos (atributos) y las operaciones (métodos) que trabajan en
esos datos están contenidos y protegidos dentro de esa unidad.
que es herencia?
La herencia es uno de los pilares fundamentales de la programación orientada a objetos
(POO) y se refiere a la capacidad de una clase de heredar características (atributos y
métodos) de otra clase. La clase que hereda se conoce como subclase o clase derivada, y la
clase de la que hereda se conoce como superclase o clase base.
que son los modificadores de acceso y cuales son?
son palabras clave en la programación que determinan el alcance y la visibilidad de los
miembros (atributos y métodos) de una clase. Controlan qué partes del código pueden
acceder o modificar esos miembros. Estos son
public
private
protected
internal
protected internal
private protected

que es un "namespace" en C#?


En C#, un namespace (o espacio de nombres en español) es una forma de organizar y
agrupar código. Sirve para evitar conflictos de nombres y proporcionar una estructura lógica
a las clases y otros elementos de un programa.
para que sirve "virtual", "override", "static", "abstract"
Estos son modificadores y palabras clave importantes en C# que afectan el comportamiento
y la funcionalidad de los miembros (métodos y propiedades) en las clases. Aquí está una
explicación de cada uno:
virtual:
Uso: Se aplica a métodos y permite que el método sea sobrescrito (override) en clases
derivadas.
override:
Uso: Se aplica a métodos en una subclase que están destinados a reemplazar (sobrescribir)
un método virtual de la clase base.
abstract:
Uso: Se aplica a clases y métodos. En una clase, indica que la clase es una clase base
abstracta y no puede ser instanciada. En un método, indica que el método no tiene una
implementación y debe ser sobrescrito en clases derivadas.
Que es una interface
Una interface (interfaz en español) en C# es un tipo de entidad que define un conjunto de
métodos, propiedades, eventos y otros miembros que una clase debe implementar. Las
interfaces permiten establecer un contrato o conjunto de reglas que una clase debe seguir si
desea cumplir con esa interfaz. En resumen, una interfaz define qué debe hacer una clase,
pero no proporciona ninguna implementación real de cómo hacerlo.
Ventajas de poo
La programación orientada a objetos (POO) ofrece varias ventajas que contribuyen a la
creación de código más eficiente, organizado y mantenible. Aquí están algunas de las
ventajas más destacadas:
Modularidad:
La POO facilita la división del código en módulos o clases, lo que permite abordar problemas
complejos dividiéndolos en partes más pequeñas y manejables. Cada clase puede estar
diseñada para cumplir con una función específica, lo que facilita la organización y
comprensión del código.
Reutilización de Código:
La herencia y las interfaces permiten la reutilización de código. Puedes crear clases base con
funcionalidades comunes y luego derivar clases específicas que hereden esas
funcionalidades. También puedes definir interfaces que múltiples clases pueden
implementar, lo que facilita la creación de código que se puede utilizar en diferentes
contextos.
Encapsulamiento:
El encapsulamiento protege los datos y las implementaciones de las clases al ocultar los
detalles internos y exponer solo una interfaz pública. Esto reduce el riesgo de
manipulaciones incorrectas o no autorizadas de los datos y promueve la seguridad y la
integridad del código.
Flexibilidad y Extensibilidad:
La herencia y la capacidad de implementar interfaces permiten extender y modificar el
comportamiento de las clases sin alterar el código existente. Esto facilita la adaptación del
código a nuevas necesidades y requisitos sin afectar otras partes del sistema.
Polimorfismo:
El polimorfismo permite que un mismo método o función se comporte de manera diferente
según el contexto de uso. Esto promueve la flexibilidad y la adaptabilidad del código y facilita
la creación de aplicaciones que pueden manejar diferentes tipos de datos y situaciones.
Facilita la Colaboración:
La POO facilita la colaboración en equipos de desarrollo. Al dividir el código en clases y
módulos, diferentes desarrolladores pueden trabajar en partes diferentes del sistema de
manera independiente, siempre y cuando cumplan con la interfaz definida.
Mejora el Mantenimiento:
La POO hace que sea más fácil realizar cambios y mejoras en el código. Debido al
modularidad y la encapsulación, puedes modificar o reemplazar partes del sistema sin
afectar otras partes que no dependen de esos cambios.
Promueve el Entendimiento:
La POO se basa en conceptos del mundo real, lo que facilita la comprensión del código para
los programadores y facilita la comunicación entre miembros del equipo y stakeholders del
proyecto.
Alternativa a la POO
Una alternativa a la programación orientada a objetos (POO) es la programación imperativa
o procedural. En la programación procedural, el énfasis se pone en el diseño de algoritmos y
en la ejecución de instrucciones en un orden secuencial. A diferencia de la POO, la
programación procedural no se centra en la organización de datos en clases y objetos.
Aquí están algunas características clave de la programación procedural:
Enfoque en Funciones o Procedimientos:
En la programación procedural, el código se organiza principalmente en funciones o
procedimientos. Estas funciones pueden aceptar parámetros y devolver valores.
Uso de Variables y Estructuras de Control:
Se hace un uso extensivo de variables para almacenar y manipular datos. Las estructuras de
control como bucles (loops) y condicionales (if-else) son fundamentales para el flujo de
ejecución del programa.
Menor Énfasis en Objetos y Clases:
A diferencia de la POO, donde las clases y objetos son fundamentales, en la programación
procedural no hay un enfoque tan marcado en la organización de datos en objetos. Los datos
se manipulan principalmente a través de variables.
Facilita Programas Lineales y de Secuencia Lógica:
La programación procedural es adecuada para problemas que siguen una secuencia lógica y
donde las operaciones se ejecutan en un orden predeterminado.
Limitaciones en la Reutilización de Código:
Aunque es posible dividir el código en funciones, la reutilización de código es generalmente
menos eficiente que en la POO, donde se pueden definir clases y métodos que pueden ser
heredados y extendidos.
Menor Abstracción:
La programación procedural tiende a ser menos abstracta que la POO. La abstracción se
logra principalmente a través de funciones y procedimientos.

También podría gustarte