Professional Documents
Culture Documents
POO - Qu es?
La programacin orientada a objetos o POO es un paradigma de programacin que usa los objetos en sus interacciones, para
disear aplicaciones y programas informticos.
- Qu es herencia, encapsulamiento y polimorfismo?
La herencia permite crear nuevas clases que reutilizan, extienden y modifican el comportamiento que se define en otras clases. La
clase cuyos miembros se heredan se denomina clase base y la clase que hereda esos miembros se denomina clase derivada. Una
clase derivada solo puede tener una clase base directa. Sin embargo, la herencia es transitiva. Si ClassC se deriva de ClassB y ClassB
se deriva de ClassA, ClassC hereda los miembros declarados en ClassB y ClassA. Conceptualmente, una clase derivada es una
especializacin de la clase base.
Cuando una clase base declara un mtodo como virtual, una clase derivada puede invalidar el mtodo con su propia
implementacin. Si una clase base declara un miembro como abstracto, ese mtodo se debe sobrescribir en cualquier clase no
abstracta que herede directamente de dicha clase. Si una clase derivada es abstracta en s misma, hereda los miembros abstractos
sin implementarlos. Los miembros abstractos y virtuales son la base para el polimorfismo, la segunda caracterstica principal de la
programacin orientada a objetos.
Polimorfismo
En tiempo de ejecucin, los objetos de una clase derivada pueden ser tratados como objetos de una clase base en lugares como
parmetros de mtodos y colecciones o matrices. Cuando ocurre, el tipo declarado del objeto ya no es idntico a su tipo en tiempo
de ejecucin.
Las clases base pueden definir e implementar mtodosvirtuales, y las clases derivadas pueden invalidarlos, lo que significa q ue
pueden proporcionar su propia definicin e implementacin. En tiempo de ejecucin, cuando el cdigo de cliente llama al mtod o,
CLR busca el tipo en tiempo de ejecucin del objeto e invoca esa invalidacin del mtodo virtual. Por lo tanto, en el cdigo fuente
puede llamar a un mtodo en una clase base y hacer que se ejecute una versin del mtodo de la clase derivada.
Los mtodos virtuales permiten trabajar con grupos de objetos relacionados de manera uniforme. Por ejemplo, supongamos que
tiene una aplicacin de dibujo que permite a un usuario crear varios tipos de formas en una superficie de dibujo. En tiempo de
compilacin, no sabe qu tipos especficos de formas crear el usuario. Sin embargo, la aplicacin tiene que realizar el seguimiento
de los distintos tipos de formas que se crean, y tiene que actualizarlos en respuesta a las acciones del mouse del usuario. Para
solucionar este problema en dos pasos bsicos, puede usar el polimorfismo:
Crear una jerarqua de clases en la que cada clase de forma especfica deriva de una clase base comn.
Usar un mtodo virtual para invocar el mtodo apropiado en una clase derivada mediante una sola llamada al mtodo de la clase
base.
Primero, cree una clase base llamada Shape y clases derivadas como Rectangle, Circle y Triangle. D a la clase Shape un mtodo
virtual llamado Draw e invaldelo en cada clase derivada para dibujar la forma determinada que la clase representa. Cree un objeto
List<Shape> y agregue Circle, Triangle y Rectangle a l. Para actualizar la superficie de dibujo, use un bucle foreach para iterar por
la lista y llamar al mtodo Draw en cada objeto Shape de la lista. Aunque cada objeto de la lista tenga un tipo declarado de Shape,
se invocar el tipo en tiempo de ejecucin (la versin invalidada del mtodo en cada clase derivada)
La encapsulacin significa que un grupo de propiedades, mtodos y otros miembros relacionados se tratan como si de una sola
unidad u objeto se tratase.
La encapsulacin significa que un grupo de propiedades, mtodos y otros miembros relacionados se tratan como si de una sola
unidad u objeto se tratase.
Herencia describe la posibilidad de crear nuevas clases basadas en una clase existente.
Polimorfismo significa que puede tener mltiples clases que se pueden utilizar de forma intercambiable, si bien cada clase
implementa las mismas propiedades o los mismos mtodos de maneras diferentes.
- Ejemplo de sobrecarga de un mtodo
- Objeto y clase
Las clases describen el tipo de los objetos, mientras que los objetos son instancias de clases que se pueden usar.
- Interfaz y clase abstracta
Puede declarar una clase como abstracta si desea evitar la creacin directa de instancias por medio de la palabra clave new. Si hace
esto, la clase solo se puede utilizar si una nueva clase se deriva de ella. Una clase abstracta puede contener una o ms firm as de
mtodo que se declaran a s mismas como abstractas. Estas firmas especifican los parmetros y el valor devuelto pero no tienen
ninguna implementacin (cuerpo del mtodo). Una clase abstracta no tiene que contener miembros abstractos; sin embargo, si una
clase contiene un miembro abstracto, la propia clase se debe declarar como abstracta. Las clases derivadas que no son abstractas
por s mismas deben proporcionar la implementacin de cualquier mtodo abstracto de una clase base abstracta.
Una interfaz es un tipo de referencia similar en cierto modo a una clase base abstracta compuesta nicamente por miembros
abstractos. Cuando una clase implementa una interfaz, debe proporcionar una implementacin para todos los miembros de la
interfaz. Una clase puede implementar varias interfaces aunque solo puede derivar de una nica clase base directa.
Las interfaces se utilizan para definir funciones especficas para las clases que no tienen necesariamente una relacin de id entidad.
Por ejemplo, la interfaz IEquatable puede ser implementada por cualquier clase o struct que deba permitir al cdigo de cliente
determinar si dos objetos del tipo son equivalentes (sin embargo, el tipo define la equivalencia). IEquatable no implica el m ismo tipo
de relacin "es un(a)" que existe entre una clase base y una clase derivada
3. Qu es un constructor?
Un constructor es el mtodo de una clase que se llama cuando un objeto de esa clase se crea. El constructor inicializa parmetros
de la clase y tiene el mismo nombre que la clase.
Cmo se sobrecargan mtodos en C#?
Puede sobrecargar mtodos en C# especificando un nmero diferente de parmetros en la definicin del mtodo. La sobrecarga
puede ayudar a dar a su programa la flexibilidad que necesita para operar con diferentes tipos de entrada de datos.
Las clases abstractas estn relacionadas con las interfaces. Son clases que no pueden ser instanciadas y son frecuentemente
partialmente implementadas o no implementadas. Una diferencia clave entre clases abstractas e interfaces es que una clase puede
implementar un ilimitado nmero de interfaces pero puede heredar slo de una clase (abstracta o de cualquier otra clase). Una
clase que est derivada de abstract puede an implementar interfaces. Las clases abstractas son tiles cuando se crean
componentes porque ellas te permiten especificar un nivel que no vara de funcionalidad en algunos mtodos pero dejan la
implementacin de otros mtodos hasta que una especfica implementacin de la clase sea necesaria. Ellas favorecen el
versionamiento porque si una funcionalidad adicional es necesaria en las clases derivadas, puede ser agregada a la clase base sin
romper el cdigo.
Una clase esttica es una forma de organizar mtodos no asociados a objetos particulares. Con una clase esttica, no tienew q ue
crear un objeto con el fin de llamar a sus mtodos, por lo que es inherentemente ms rpido. La clase de matemticas en el espacio
de nombres del sistema es un buen ejemplo de una clase esttica bien pensada.
ASPX
- Ciclo de vida de una pgina
El cdigo para manejar eventos de aplicacin (tales como el inicio y el final de una aplicacin) residen en el Global.asax. T ales
cdigos de eventos no pueden residir en una pgina web o en un servicio web, pues durante el inicio o el final de la aplicacin, su
cdigo no ha sido cargado (o descargado). Global.asax es tambin usado para declarar datos que estn disponibles en diferente s
solicitudes de la aplicacin y a travs de diferentes sesiones del navegador. Este proceso es conocido como administracin del
estado de sesin y aplicacin.
El archivo Global.asax debe residir en la raz virtual del IIS. Un directorio virtual puede ser visto como un contenedor de una
aplicacin web. Los eventos y estado especificados en el archivo global son entonces aplicados a todos los recursos alojados dentro
de la aplicacin web. Si, por ejemplo, Global.asax define una variable de estado a nivel de aplicacin, todos los archivos .aspx dentro
del directorio virtual tendr acceso a la variable.
- Web.config, qu es, para qu sirve, puede haber ms de uno
- ViewState, ventajas y desventajas
- AJAX, UpdatePanel
ADO.NET Entity Framework
Entity Framework, sin duda destacaramos los siguientes puntos:
Se trata de un Framework que permite manipular y acceder a los datos como clases .NET.
Permite realizar un modelado de datos a nivel conceptual, es decir, habilita la separacin de las aplicaciones y los
esquemas de BD.
Permite una mejor interactuacin de los datos con el entorno .NET: Se interacta con objetos, frente a hacerlo con filas y
columnas.
Proporciona una serie de servicios en tiempo de ejecucin y en tiempo de diseo que permite a los desarrolladores
describir los datos de la aplicacin e interactuar con ellos a un nivel de abstraccin conceptual claramente alineado con
el concepto de implementacin de aplicaciones de negocio, y que adems ayuda a aislar la aplicacin respecto a los
esquemas de base de datos (BD) sobre los que se ha definido.
Como coment Jorge en su post, se apoya en LINQ para definir las consultas a objetos del esquema EDM (Entity Data
Model).
Supone una capa ms, pero independiza las aplicaciones de el esquema de BD subyacente, independientemente de la
tecnologa de BD que se est utilizando.
Especificar la opcin de generacin del EDM (a partir de una BD o bien un EDM vaco.
Especificar la cadena de conexin a la BD (que como siempre, puede ser un archivo fsico o bien una instancia de SQL
Server).
Especificar que objetos de la BD queremos que formen de nuestro EDM (en este caso, tablas y procedimientos
almacenados).
ADO.NET Entity Framework permite a los desarrolladores crear aplicaciones de acceso a datos programando con un modelo de
aplicaciones conceptuales en lugar de programar directamente con un esquema de almacenamiento relacional. El objetivo es
reducir la cantidad de cdigo y el mantenimiento necesarios para las aplicaciones orientadas a datos. Las aplicaciones de Entity
Framework ofrecen las siguientes ventajas:
Las aplicaciones pueden funcionar en trminos de un modelo conceptual ms centrado en la aplicacin, que incluy e
tipos con herencia, miembros complejos y relaciones.
Las aplicaciones estn libres de dependencias de codificacin rgida de un motor de datos o de un esquema de
almacenamiento.
Las asignaciones entre el modelo conceptual y el esquema especfico de almacenamiento pueden cambiar sin tener que
cambiar el cdigo de la aplicacin.
Los desarrolladores pueden trabajar con un modelo de objeto de aplicacin coherente que se puede asignar a diversos
esquemas de almacenamiento, posiblemente implementados en sistemas de administracin de base de datos diferentes.
Se pueden asignar varios modelos conceptuales a un nico esquema de almacenamiento.
La compatibilidad con Language Integrated Query (LINQ) proporciona validacin de la sintaxis en el momento de la
compilacin para consultas en un modelo conceptual.
Una expresin lambda es una funcin annima que puede contener expresiones e instrucciones y se puede utilizar para crear
delegados o tipos de rboles de expresin.
Para crear una expresin lambda, especifique parmetros de entrada (si existen) a la izquierda del operador =>lambda, y coloq ue
la expresin o bloque de instrucciones en el otro lado. Por ejemplo, la expresin lambda x => x * x especifica un parmetro
denominado x y devuelve el valor x elevado al cuadrado. Puede asignar esta expresin a un tipo delegado, como se muestra en e l
ejemplo siguiente:
int[] nums = { 3, 4, 5, 6, 4, 5, 7 };
La primera consulta la usamos para guardar en la variable de tipo annimo (numMayores) los nmeros que sean mayores de 5, y
para lograrlo usamos la expresin lambda (n => n > 5). El resultado sera evidentemente { 6, 7 }.
En la segunda consulta (numPares) obtendremos los nmeros pares usando la siguiente expresin lambda (n => n % 2 == 0). El
resultado sera evidentemente { 4, 6, 4 }.
En la tercera consulta (numImpares) obtendremos los nmeros impares usando la siguiente expresin lambda (n => n % 2 != 0).
Condiciones que debemos tener en cuenta a la hora de definir una expresin lambda:
Las expresin lambda las podemos usar para cualquier tipo de delegado, ya sean definidos por nosotros o los definidos por el
propio .NET.
Delegates
Un delegado es un tipo que representa referencias a mtodos con una lista de parmetros determinada y un tipo de valor devuelto.
Cuando se crea una instancia de un delegado, puede asociar su instancia a cualquier mtodo mediante una firma y un tipo de valor
devuelto compatibles. Puede invocar (o llamar) al mtodo a travs de la instancia del delegado.
Los delegados se utilizan para pasar mtodos como argumentos a otros mtodos. Los controladores de eventos no son ms que
mtodos que se invocan a travs de delegados. Cree un mtodo personalizado y una clase, como un control de Windows, podr
llamar al mtodo cuando se produzca un determinado evento. En el siguiente ejemplo se muestra una declaracin de delegado:
public delegate int PerformCalculation(int x, int y);
Un delegado es un tipo que encapsula de forma segura un mtodo, similar a un puntero de funcin en C y C++. A diferencia de los
punteros de funcin de C, los delegados estn orientados a objetos, proporcionan seguridad de tipos y son seguros. El tipo de un
delegado se define por el nombre del delegado. En el ejemplo siguiente se declara un delegado denominado Del que puede
encapsular un mtodo que toma una cadena como argumento y devuelve void:
public delegate void Del(string message);
Normalmente, un objeto delegado se construye con el nombre del mtodo que el delegado encapsular o con un mtodo
annimo. Una vez que se instancia un delegado, una llamada al mtodo hecha al delegado ser pasada por el delegado a ese
mtodo. Los parmetros pasados al delegado por el autor de la llamada se pasan a su vez al mtodo, y el valor devuelto desde el
mtodo, si lo hubiera, es devuelto por el delegado al autor de la llamada. Esto se conoce como invocar al delegado. Un delegado
con instancias se puede invocar como si fuera el propio mtodo encapsulado. Por ejemplo:
public static void DelegateMethod(string message)
{
System.Console.WriteLine(message);
}
Filtering (Filtrado)
Projection (Proyeccin)
Partitioning (Particionado)
Join (Unin)
Concatenation (Concatenacin)
Ordering (Ordenacin)
Grouping (Agrupacin)
Set (Conjunto)
Conversion (Conversin)
Equality (Igualdad)
Element (Elemento)
Generation (Generacin)
Quantifier (Cuantificadores)
Aggregation (Agregacin)
La siguiente funcin de agregacin ser Sum, que devuelve una suma de todos los valores de un campo concreto perteneciente a
la lista. As, la siguiente operacin devolvera la suma del beneficio obtenido por todas las ventas:
// Usamos la funcin de agregacin Sum para calcular la suma de todos los elementos
Clases parciales.
Existen diversas situaciones en las que es conveniente dividir una definicin de clase:
Al trabajar en proyectos grandes, el hecho de dividir una clase en archivos independientes permite que varios programadores
trabajen al mismo tiempo con ella.
Al trabajar con un cdigo fuente generado automticamente, se puede agregar el cdigo a la clase sin tener que volver a crear el
archivo de cdigo fuente. Visual Studio utiliza este enfoque al crear formularios Windows Forms, cdigo contenedor de un serv icio
Web, etc. Se puede crear cdigo que utilice estas clases sin tener que modificar el archivo creado por Visual Studio.
Para dividir una definicin de clase, utilice el modificador partial, como se muestra a continuacin:
Clases internas:
Si va a programar un componente complejo, es posible que necesite implementar clases anidadas. Las clases anidadas son clases
cuya declaracin est contenida por completo en la declaracin de clase de otra clase y que resultan tiles para programar
modelos de objetos en los componentes.
La implementacin de clases anidadas es un asunto trivial. Una vez que la declaracin de clase se encuentra contenida por
completo dentro de otra declaracin de clase, la clase se considera anidada y slo permite el acceso a travs de la clase envolvente.
}
Qu es WCF? Parte 1
Una de las preguntas ms comnes cuando hablamos de servicios y arquitecturas orientadas a servicios en tecnologas Microsoft es:
Qu es WCF? Pues vamos a tratar de dar una breve introduccin referente a que es WCF.
WCF significa Windows Comunication Foundation. Esta disponible desde la versin 3.0 del framework de .NET. Muchos gurs de
SOA incluso dicen que WCF es un framework aparte al framework de .NET algo con lo que coincido escencialmente por que el
framework de .NET conoce de componentes y no de servicios.
Que es un contrato de servicios?
Un contrato de servicios es una instruccin que proporciona informacin sobre:
Qu es un mensaje?
Unidad autnoma de datos que puede constar de varias partes, incluyendo un cuerpo y encabezados.
Qu es un servicio?
Construccin que expone uno o ms extremos, y en la que cada extremo expone una o ms operaciones de servicio.
Qu es un contrato de operacin?
Un contrato de operacin define los parmetros y el tipo de valor devuelto de una operacin. Al crear una interfaz que define el
contrato de servicio, se significa un contrato de operacin mediante la aplicacin del atributo OperationContractAttribute a cada
definicin de mtodo que forma parte del contrato. Las operaciones se pueden modelar como tomar un mensaje nico y devolver
un mensaje nico, o como tomar un conjunto de tipos y devolver un tipo. En el ltimo caso, el sistema determinar el formato de
los mensajes que han de intercambiarse para esa operacin.
Qu es un canal y cuantos tipos hay?
Un canal es un componente que procesa un mensaje de alguna manera, por ejemplo, autenticando un mensaje. Un conjunto de
canales tambin se conoce como una pila de canales. Los canales funcionan en los mensajes y encabezados del mensaje. Esto es
diferente de la capa en tiempo de ejecucin del servicio, que se ocupa principalmente de procesar el contenido de los cuerpos de
los mensajes.
Hay dos tipos de canales: canales de transporte y canales de protocolo.
Los canales de transporte leen y escriben mensajes de la red (o algn otro punto de la comunicacin con el mundo externo).
Algunos transportes utilizan un codificador para convertir los mensajes (que se representan como conjuntos de informacin XML s)
hacia y desde la representacin de la secuencia de bytes utilizada por la red. Son ejemplos de transportes HTTP, canalizaciones con
nombre, TCP y MSMQ. Son ejemplos de codificaciones XML y binario optimizado.
Los canales de protocolo implementan protocolos de procesamiento de mensajes, a menudo leyendo o escr ibiendo encabezados
adicionales en el mensaje. Los ejemplos de tales protocolos incluyen WS-Security y WS-Reliability.
Qu es LINQ?
Language Integrated Query (LINQ, pronunciado link) es un componente de la plataforma Microsoft .NET que agrega capacidades
de consulta a datos de manera nativa a los lenguajes .NET, si bien existen implementaciones para Java, PHP, JavaScript y
ActionScript
LINQ extiende el lenguaje a travs de las llamadas expresiones de consulta, que son parecidas a las sentencias SQL y pueden ser
usadas para extraer y procesar convenientemente datos de arrays, clases enumerables, documentos XML, bases de datos
relacionales y fuentes de terceros. Otros usos, que utilizan expresiones de consulta como plataforma general para la composic in
de expresiones ms legibles, incluyen la construccin de manejadores de eventos.
LINQ adems define un conjunto de nombres de mtodos (llamados operadores de consulta estndar), y un conjunto de reglas de
traduccin, que son usadas por el compilador para traducir las expresiones de consulta en expresiones normales del lenguaje,
usando estos nombres de mtodos, expresiones lambda y tipos annimos.
Funcin annima
Una funcin annima es una instruccin o expresin insertada que puede utilizarse en cualquier lugar donde se espere un tipo
delegado. Puede utilizarla para inicializar un delegado con nombre o pasarla en lugar de un tipo delegado con nombre como un
parmetro de mtodo. Se dividen en expresiones lambda y mtodos annimos.
Qu es MVC (Model-View-Controller) Modelo-Vista-Controlador?
MVC es un patrn de arquitectura el cual separa la representacin y la interaccin del usuario. Est divido en 3 secciones. Modelo,
Vista, Controlador.
El Controller es responsable de tomar la peticin del usuario y cargar el modelo y la vista apropiados.
La vista final es luego enlazada con la data del modelo y enviada como una respuesta al usuario final en el navegador
(browser).
Functionalidad
3 capas
MVC
Apariencia
Interfaz de usuario.
Vista
UI lgica
Interfaz de usuario.
Controlador
Capa Intermedia
Modelo
User interface
Controlador
Accediendo datos
Qu es ruteo en MVC?
El ruteo ayuda a definir una estructura de URL y mapear la URL con el controlador.
Por ejemplo digamos que queremos que cuando un usuario tipee http://localhost/view/ViewCustomer/”, vaya al
controlador customer e invoque la accin DisplayCustomer. Esto es definido agregando una entrada en la coleccin routes
usando la funcin maproute. Ejemplo:
routes.MapRoute(
<body>
<div>
</div>
</body>
Para poder mostrar un error de validacin necesitamos usar un mtodo ValidateMessageFor el cual pertenece a la clase de apoyo
Html.
{ %>
<%}%>
Posteriormente en el controlador podemos chequear si el modelo est correcto o no utilizado la propiedad ModelState.IsValid y
de acuerdo a eso tomar acciones.
if (ModelState.IsValid)
obj.Save();
return View("Thanks");
else
10
return View("Customer");
11
12
}
}
Una vez creada la vista parcial puedes llamarla desde la vista principal utilizando el mtodo Html.RenderPartial as:
<body>
<div>
</div>
</body>
Para poder mostrar un error de validacin necesitamos usar un mtodo ValidateMessageFor el cual pertenece a la clase de apoyo
Html.
{ %>
<%}%>
Posteriormente en el controlador podemos chequear si el modelo est correcto o no utilizado la propiedad ModelState.IsValid y
de acuerdo a eso tomar acciones.
if (ModelState.IsValid)
obj.Save();
return View("Thanks");
else
10
return View("Customer");
11
12
}
}
WCF
Windows Communication Foundation (WCF) es un marco de trabajo para la creacin de aplicaciones orientadas a servicios. Con
WCF, es posible enviar datos como mensajes asincrnicos de un extremo de servicio a otro. Un extremo de servicio puede formar
parte de un servicio disponible continuamente hospedado por IIS, o puede ser un servicio hospedado en una aplicacin. Un
extremo puede ser un cliente de un servicio que solicita datos de un extremo de servicio. Los mensajes pueden ser tan simples
como un caracter o una palabra enviados como XML, o tan complejos como un flujo de datos binarios. A continuacin se indican
unos cuantos escenarios de ejemplo:
Un servicio seguro para procesar transacciones comerciales.
Un servicio que proporciona datos actualizados a otras personas, como un informe sobre trfico u otro servicio de supervisin.
Un servicio de chat que permite a dos personas comunicarse o intercambiar datos en tiempo real.
Una aplicacin de panel que sondea los datos de uno o varios servicios y los muestra en una presentacin lgica.
Exponer un flujo de trabajo implementado utilizando Windows Workflow Foundation como un servicio WCF.
Una aplicacin de Silverlight para sondear un servicio en busca de las fuentes de datos ms recientes.
Si bien era posible crear tales aplicaciones antes de que existiera WCF, con WCF el desarrollo de extremos resulta ms sencillo que
nunca. En resumen, WCF se ha diseado para ofrecer un enfoque manejable para la creacin de servicios web y clientes de
servicios web.