Asignacion 1 Programacion1
Asignacion 1 Programacion1
2. Firma del método: La firma es el nombre del método y el tipo y la cantidad de sus
parámetros. Y, de hecho, sobrecargar un método se basa en las diferencias en la
firma.
Ejemplo en JAVA:
¿Qué ocurre aquí?
Hay métodos con el mismo nombre (Sumar), pero con parámetros diferentes: uno acepta
dos enteros y otros tres enteros. Incluso uno acepta dos números de tipo double.
¿Cómo puede decirle el compilador qué método quiere llamar basándose en la cantidad y el
tipo de argumentos que le envíe?
• Esto le permite al programador definir clases que pueden manipular diferentes tipos
de datos de entrada, sin cambiar el nombre del método.
cuando necesitas proporcionar varias formas de hacer una cosa similar, pero con diferentes
tipos de parámetros o cantidades de argumentos. Por ejemplo, si tienes una clase de
matemáticas, querrás sobrecargar los métodos de clase para aceptar múltiples tipos
numéricos . Eso puede aplicarse a funciones, como sobrecargas de ToString() para aceptar
argumentos de formato opcionales.
Modificadores de Acceso
Los modificadores de acceso en programación orientada a objetos controlan la visibilidad o
acceso que otras clases y objetos tienen a los miembros (atributos y métodos) de una clase.
Los modificadores de acceso permiten definir qué partes de una clase están disponibles para
ser accedidas o modificadas desde otras clases y qué partes están protegidas.
En lenguajes como C# y Java, existen varios modificadores de acceso comunes que definen
los niveles de visibilidad de los miembros de una clase:
1. Public
En este ejemplo, tanto el atributo nombre como el método MostrarNombre() son accesibles
desde cualquier parte del programa.
2. Private
• Acceso: La mayoría restringida. Este miembro puede ser accesible solo dentro de la
misma clase donde fue creado. Es imposible hacer referencia directa por parte de
otra clase. miembros protegidos. Accesible dentro de la misma clase o subclases de
esa clase, solo de él.
Aquí, el atributo edad y el método MostrarEdad() solo pueden ser accedidos dentro de la
clase Persona. Si intentas acceder a edad desde fuera de la clase, obtendrás un error.
3. Protected
• Acceso: Los miembros internal son accesibles solo dentro del mismo assembly o
proyecto. Este modificador es útil para aplicaciones grandes, donde se quiere limitar
el acceso a ciertos miembros dentro del proyecto, pero no hacerlo completamente
public.
En este caso, Persona es accesible solo dentro del mismo proyecto o assembly. Desde fuera
del proyecto, no se puede acceder a esta clase.
5. Protected Internal (C# exclusivo)
• Acceso: Combina las características de protected e internal. Los miembros con este
modificador son accesibles desde cualquier clase, del mismo assembly y desde
subclases (aunque estén en otros assemblies).
Aquí, nombre y MostrarNombre() serán accesibles desde cualquier clase en el mismo
assembly y desde cualquier subclase que herede de Persona, incluso si está en otro
assembly.
6. Private Protected (C# exclusivo)
Con private protected, solo las subclases dentro del mismo assembly pueden acceder a
edad y MostrarEdad().
Ejemplos y una explicación breve de los modificadores mostrados, algunos son exclusivos de
C#
• public: Si necesitas que otros puedan interactuar con tu clase fácilmente (como
métodos públicos).
• private: Para encapsular datos que no deberían ser accesibles o modificados desde
fuera.
• protected: Útil cuando diseñas clases base que deben compartir miembros con
subclases, pero no con el resto del código.
• private protected: Para limitar aún más el acceso solo a las subclases en el mismo
proyecto.
1. namespace
Un namespace es un contenedor que organiza clases, interfaces, estructuras y otras
entidades de forma lógica dentro de un programa. Los namespaces ayudan a evitar
conflictos de nombres entre las clases o funciones que podrían tener el mismo nombre pero
estar en diferentes contextos. Esto es especialmente útil en aplicaciones grandes o cuando
se utilizan bibliotecas externas.
Aquí, la clase Cliente está dentro del namespace Empresa.Proyectos. Esto ayuda a organizar
el código, especialmente cuando trabajas en grandes proyectos.
Si tienes otro archivo con la clase Cliente en otro namespace, no habrá conflictos de nombre:
Ahora puedes usar ambas clases Cliente dependiendo de cuál namespace uses.
Ventajas:
• Evita colisiones de nombres (por ejemplo, puedes tener múltiples clases con el
mismo nombre en diferentes namespaces).
2. using
La palabra clave using tiene dos propósitos principales en C#.
Permite acceder a clases y miembros de un namespace sin tener que especificar el nombre
completo del namespace en cada referencia.
Por ejemplo, en lugar de escribir el namespace completo cada vez que quieras acceder a una
clase:
Aquí, el using System; permite que el código acceda a las clases y funciones del namespace
System sin tener que usar el nombre completo del namespace cada vez.
using también se usa para manejar recursos externos (como archivos o conexiones a base de
datos) que necesitan ser liberados de forma automática después de ser usados. Esto asegura
que los recursos sean liberados correctamente.
En este ejemplo, el bloque using asegura que el objeto StreamReader sea eliminado
correctamente (llamando a Dispose()) cuando termine de ejecutarse el bloque, aunque
ocurra una excepción.
3. this
El this en C# hace referencia a la instancia actual de la clase. Es muy útil cuando dentro de
un método de instancia o constructor necesitas referirte a la propia instancia de la clase,
especialmente cuando hay ambigüedad entre los nombres de los parámetros y los campos
de la clase.
En este caso, la palabra clave this se usa para referirse al campo de instancia nombre y
diferenciarlo del parámetro nombre que se pasa al constructor. Sin this, no habría una forma
directa de distinguir entre el campo de la clase y el parámetro del constructor.
o Puedes usar this para pasar la instancia actual de la clase a otro método o
constructor.