Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web

63
Didier Fabián Granados Muñoz Sesión No. 5 La Web y la Orientación a Objetos Septiembre 2 de 2009

Transcript of Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web

Page 1: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web

Didier Fabián Granados Muñoz

Sesión No. 5 – La Web y la Orientación a Objetos

Septiembre 2 de 2009

Page 2: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web
Page 3: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web

Bueno… y qué es un paradigma?

Un paradigma es un conjunto de teorías generales,

suposiciones, leyes o técnicas de que se vale una escuela de

análisis o comunidad científica para evaluar todas las cosas.

Page 4: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web

La Programación Orientada a Objetos es intentar llevar a un

programa de computador una visión de un problema que sea

lo más cercana posible a la realidad, de acuerdo al ámbito en el

que se desarrolla el mismo.

Page 5: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web

El mundo está lleno de objetos reales, los

cuales se pueden representar como tales

en una solución computarizada.

Page 6: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web

Clase

Objeto

Es el molde o plantilla con el que se puede construir

objetos. En otras palabras, es una abstracción de

objetos.

Es cualquier cosa de la cual podamos emitir un concepto,

o descripción. En la POO, un objeto es una instancia de

una clase, llamando instanciar al hecho de producir y

completar un objeto llenando con valores sus atributos.

Page 7: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web

Los objetos no solo tienen sus características. También

tienen la capacidad de ejecutar diferentes acciones.

Page 8: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web

Encapsulamiento.

Público.

Privado.

Protegido.

Herencia.

Simple.

Múltiple.

Polimorfismo.

Sobrecarga de métodos.

Tipificación.

Concurrencia.

Persistencia.

Entre otras…

Page 9: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web

En UML, una clase está representada por un rectángulo con tres

secciones.

Nombre de la clase

Atributos de la clase con

su encapsulamiento y

tipo de dato.

Métodos de la clase, con

su encapsulamiento y tipo

de dato que retorna,

Page 10: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web

class System

Chev rolet

Automóv il

Mazda Renault

Page 11: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web

Un taxi es un automóvil con número de operación y que trabaja para una empresa.

Page 12: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web

Asociación Agregación Composición

“es parte de” “debe tener”“se relaciona con”

Page 13: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web

Genericidad.

Excepciones.

Interfaces.

Clases abstractas.

Page 14: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web
Page 15: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web

Hay muchos lenguajes, pero solo vamos a ver lo necesario…

Page 16: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web

La teoría que vimos en la clase pasada tiene su aplicación

en un lenguaje de programación que sea orientado a

objetos.

Dependiendo del lenguaje, muchas cosas se aplican de la

misma manera, pero hay otras que sí tienen diferencias

extremas (especialmente la sintaxis) y que, sencillamente,

no están.

A continuación se hará un recorrido por la

implementación más sencilla y común que existe en todos

los lenguajes orientados a objetos.

También se irán viendo palabras claves que no se han

dicho durante el curso, y se irán explicando en su

momento.

Page 17: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web

1. Para crear una clase

Se hace uso de la palabra

clave class.

Algunos lenguajes la

declaran con la primera

letra en mayúscula

(Class).

class Automovil

Page 18: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web

2. Para declarar atributos

Según la sintaxis del

lenguaje, se llama

primero el tipo de dato y

luego el nombre del

atributo.

Y antes del tipo de dato,

el tipo de

encapsulamiento.

public String color

Page 19: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web

3. Para declarar métodos

De igual manera que los

atributos, se llama

primero el tipo de dato y

luego al método.

Y antes del tipo de dato,

el encapsulamiento.

Si tiene parámetros, estos

deben tener primero el

tipo de dato y luego su

nombre.

public Motor setMotor(Motor motor)

Page 20: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web

4. Constructor

Un constructor es un método

perteneciente a la clase que

posee unas características

especiales:

Se llama igual que la clase.

No devuelve nada, ni

siquiera void.

Pueden existir varios, pero

siguiendo las reglas de la

sobrecarga de funciones.

De entre los que existan, tan

sólo uno se ejecutará al

crear un objeto de la clase.

También se encapsula. public Automovil()

Page 21: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web

5. Instanciación

Recordar que en la clase anterior se dijo cómo se instancia una

clase…

Existe la palabra clave new.

Cuando se define la instancia, ésta deberá ser tipada con la

misma clase y luego, se debe invocar al constructor de la clase.

Si hay sobrecarga del constructor, se debe invocar el que se

ajuste a las necesidades del programador.

Automovil mazda = new Automovil()

Automovil chevrolet = new Automovil(2009, "MOR345")

Page 22: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web

6. Invocación de atributos y métodos

Para invocar un método de una clase, depende de su

encapsulamiento y de que la clase haya sido instanciada, a no

ser que dicho método sea declarado como estático.

Normalmente se llama desde la misma variable de instancia.

Si es estático, se llama anteponiendo el nombre de la clase y

luego el nombre del atributo o método.

Automovil mazda = new Automovil();

Automovil chevrolet = new Automovil(2009, "MOR345");

int placa = mazda.getPlaca(); // mazda es instancia

int numeroPuertas = Automovil.numeroPuertas;

Page 23: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web

Los demás conceptos (herencia, interfaces, asociaciones…) son muy variables de acuerdo al lenguaje de programación.

Page 24: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web
Page 25: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web
Page 26: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web

Conceptos claros.

Orientación al Objeto pura.

Seguridad.

Alto nivel.

Modelo de ejecución simple.

Sintaxis fácil de leer.

Eliminación de la redundancia.

Pequeño.

De fácil transición a otros lenguajes.

Soporte para el aseguramiento de la corrección.

Entornos agradables.

Page 27: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web
Page 28: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web

El Simula 67 fue considerado como el primer lenguaje de

programación orientado a objetos.

Fue diseñado en 1967 por Ole-Johan Dhal y Kristen Nygaard

en el Norwegian Computing Center en Oslo.

El nombre de Simula 67 fue acortado a Simula en 1986,

existiendo un estándar del lenguaje desde 1987.

Page 29: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web

class POLIGONO;

virtual: procedure set_vertices

begin

procedure dibuja begin ... end;

end POLIGONO

POLIGONO class TRIANGULO

...

end TRIANGULO

...

ref(TRIANGULO) t; ref(POLIGONO) p;

...

p :- t;

p.set_vertices;

p.dibuja;

(p qua TRIANGULO).dibuja

Page 30: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web

Primer lenguaje creado con tecnología de objetos puros

El origen de Smalltalk está alrededor de 1970 en la

Universidad de Utah de la mano de Alan Kay

Smalltalk se desarrolla en el Xerox Palo Alto Research Center

(PARC) de la mano de Alan Kay, Adele Goldberg y Daniel

Ingalls

Los conceptos de Smalltalk han influido en el diseño de LPOO

y en el aspecto y sensación de los GUI como los de Macintosh

o Motif.

Algunas versiones: Smalltalk 72, Smalltalk 74, Smalltalk 76,

Smalltalk 78 y Smalltalk 80, Smalltalk/V de Digital.

Page 31: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web

Entorno de programación: Lenguaje Smalltalk básico, colección

de clases y el entorno real de programación.

El estilo del lenguaje se enfatiza la ligadura dinámica y no

realiza chequeo de tipos.

El bloque fundamental es la clase, que contiene la descripción

de variables y métodos.

Los métodos contienen el código, y definen cómo responde

un objeto a un mensaje.

La ejecución de una rutina de un objeto se denomina en la

terminología de Smalltalk “enviar un mensaje” al objeto, cuya

clase encontrará la forma apropiada de manejar dicho

mensaje.

Page 32: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web

Todo en Smalltalk son objetos, incluyendo a las propias clases.

El entorno de Smalltalk permite un rápido desarrollo de

programas.

La biblioteca de clases fue diseñada para ser extendida y

adaptada por adición de subclases para satisfacer las

necesidades de la aplicación.

La arquitectura Modelo Vista Controlador (MVC) es una

importante contribución de Smalltalk.

Page 33: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web

Concepto Características ¿Las implementa?

Abstracción Variables de instanciaMétodos de instanciaVariables de claseMétodos de clase

SíSíSíSí

Encapsulamiento De variablesDe métodos

PrivadoPúblico

Modularidad Tipos de módulo Ninguno

Jerarquía HerenciaUnidades genéricasMetaclases

SimpleNoSí

Tipos Comprobación estrictaPolimorfismo

NoSí

Concurrencia Multitarea Indirectamente(mediante clases)

Persistencia Objetos persistentes No

Page 34: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web

C++ es un lenguaje híbrido, extensión del lenguaje C.

Fue desarrollado por Bjarne Stroustrup en los laboratorios

AT&T.

Las primeras versiones del lenguaje se denominaron C con

clases, y datan de 1980.

El nombre de C++ se debe a Rick Mascitti, quien lo bautizó de

esta manera en el verano de 1983.

C++ fue instalado por primera vez fuera del grupo de

investigación del autor en julio de 1983.

En 1987 surge la necesidad de estandarización de C++.

Dispone de capacidades para la herencia simple y múltiple.

Page 35: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web

Por defecto C++ tiene ligadura estática.

Las funciones definidas como virtuales pueden beneficiarse del

concepto de ligadura dinámica.

C++ es estrictamente tipado, aunque admite la posibilidad de

casting.

No cuenta con un recolector de basura.

La ausencia de un gestor automático de memoria por defecto,

obliga al concepto de destructor.

Ocultamiento de la información incluso a los descendientes.

Cuenta con un mecanismo de acceso especial por parte de

una clase o una función que se declare como friend.

Soporte de manejo de excepciones.

Page 36: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web

Soporte de genericidad mediante las plantillas.

Permite sobrecarga de operadores.

Sintaxis oscura, y gramática difícil de analizar.

Lenguaje complejo, preocupado por la detección temprana de

errores, y por la eficiencia de la ejecución, perdiendo algo de

sencillez y de flexibilidad para el diseño.

Page 37: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web

#include <iostream.h>

#include <string.h>

class Saludos {

char *saludo;

public:

Saludos(char *msg) {

int longitud = strlen(msg);

saludo = new char[longitud+1];

strcpy(saludo, msg);

}

char* muestra(void) {return saludo;}

};

void main(void) {

Saludos s1("Hola Mundo }:()");

Saludos s2("Bye, dear friends :(((");

cout << s1.muestra() << endl;

cout << s2.muestra() << endl;

}

Page 38: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web

Concepto Características ¿Las implementa?

Abstracción Variables de instanciaMétodos de instanciaVariables de claseMétodos de clase

SíSíSíSí

Encapsulamiento De variablesDe métodos

Público, Privado, ProtegidoPúblico, Privado, Protegido

Modularidad Tipos de módulo Fichero

Jerarquía HerenciaUnidades genéricasMetaclases

MúltipleSíNo

Tipos Comprobación estrictaPolimorfismo

SíSí

Concurrencia Multitarea Indirectamente(mediante clases)

Persistencia Objetos persistentes No

Page 39: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web

Eiffel fue desarrollado por Bertrand Meyer.

Es un lenguaje orientado al objeto puro.

Soporta ligadura dinámica.

Tiene comprobación estricta de tipos.

Admite herencia múltiple.

Soporta clases parametrizadas.

La gestión de memoria la lleva a cabo el entorno de

programación.

Eiffel proporciona una biblioteca de clases predefinidas muy

completa.

Page 40: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web

Eiffel cuenta con la clase como único criterio de estructuración.

Una declaración de clase en Eiffel puede incluir una lista de

características exportadas, una lista de clases predecesoras, y

una lista de declaraciones de características

Cuenta con manejo de excepciones

Page 41: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web

class STACK[T]

creation

create

feature {NONE}

elems : ARRAY[T];

feature

max_size : INTEGER;

total : INTEGER;

create(n : INTEGER) is

require

n > 0

do

!!elems.make(1,n);

max_size := n

ensure

max_size = n;

total = 0;

end;

empty : BOOLEAN is do

Result := total = 0

ensure

equal(strip(), old strip())

end;

...

pop is require

not empty

do

total := total -1

ensure

total = old total -1;

not full

end

invariant

0 <= total;

total <= max_size

end – STACK

Page 42: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web

Concepto Características ¿Las implementa?

Abstracción Variables de instanciaMétodos de instanciaVariables de claseMétodos de clase

SíSíNoNo

Encapsulamiento De variablesDe métodos

Público (sólo lectura), Privado, SelectivamentePúblico, Privado, Selectivamente

Modularidad Tipos de módulo Clase

Jerarquía HerenciaUnidades genéricasMetaclases

MúltipleSíNo

Tipos Comprobación estrictaPolimorfismo

SíSí

Concurrencia Multitarea Sí (mediante clases de bibliotecas)

Persistencia Objetos persistentes Sí (mediante clases)

Page 43: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web

Realizado por un equipo de

Sun Microsystems a finales de

1995.

Ha recibido una especial

atención desde los primeros

meses de 1996.

Es un lenguaje orientado al

objeto puro diseñado desde

cero, que recibe muchas

influencias de C++.

Soporta threads (hilos).

Recogida de basura

automática.

Page 44: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web

Se le atribuyen las siguientes características

Simple y poderoso.

Seguro.

Robusto.

Interactivo.

Independiente de la arquitectura.

Interpretado.

Sencillo de aprender (Hmmmmmmmmm…)

Java produce un bytecode que será interpretado por una

máquina virtual.

La máquina virtual se encuentra a menudo en navegadores

web.

La explosión de Internet ha influido en el auge de Java.

Page 45: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web

class _saludos {

String saludo = "";

_saludos(String msg) {

saludo = msg;

}

public void mostrar() {

System.out.println(saludo);

}

}

class Saludos {

public static void main(String args[]) {

_saludos s1 = new _saludos("Hola Mundo :)))");

_saludos s2 = new _saludos("Adios amigos :((");

s1.mostrar();

s2.mostrar();

}

}

Page 46: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web

Concepto Características ¿Las implementa?

Abstracción Variables de instanciaMétodos de instanciaVariables de claseMétodos de clase

SíSíSíSí

Encapsulamiento De variablesDe métodos

Público, Privado, ProtegidoPúblico, Privado, Protegido

Modularidad Tipos de módulo Fichero

Jerarquía HerenciaUnidades genéricasMetaclases

SimpleNoNo

Tipos Comprobación estrictaPolimorfismo

SíSí

Concurrencia Multitarea Indirectamente(mediante clases)

Persistencia Objetos persistentes EJB

Page 47: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web

Bueno… y entonces…

Page 48: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web

La programación dinámica en la

Web se inició con la incrustación del

código del lenguaje seleccionado

dentro del código HTML.

Dada la evolución del modelo y la

arquitectura de las aplicaciones, se

optó por separar la capa de lógica

de la capa de presentación.

También han surgido diferentes

frameworks que han permitido

extender el concepto de reutilización

de código.

Page 49: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web

La programación dinámica en la

Web se inició con la incrustación del

código del lenguaje seleccionado

dentro del código HTML.

Dada la evolución del modelo y la

arquitectura de las aplicaciones, se

optó por separar la capa de lógica

de la capa de presentación.

También han surgido diferentes

frameworks que han permitido

extender el concepto de reutilización

de código.

Un framework, en el desarrollo de software, es una estructura de soporte definida, mediante la cual otro proyecto de software puede ser organizado y desarrollado. Típicamente, puede incluir soporte de programas, bibliotecas y un lenguaje interpretado entre otros software para ayudar a desarrollar y unir los diferentes componentes de un proyecto.Representa una arquitectura de software que modela las relaciones generales de las entidades del dominio. Provee una estructura y una metodología de trabajo la cual extiende o utiliza las aplicaciones del dominio.

Page 50: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web

Y hablaremos entonces de…

PHP C#

Page 51: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web

Siglas de Hypertext Preprocessor.

Originalmente diseñado en Perl.

Totalmente orientado a la Web.

Inicialmente era un lenguaje procedural.

Desde la versión 4.2.x comenzó su propia implementación de POO,

aunque se robusteció en la versión 5.x.

Es un lenguaje interpretado.

Siempre tiene que estar en una etiqueta.

No cuenta con tipos de datos, es decir, cualquier variable puede ser

declarada y puede tomar cualquier valor.

Page 52: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web

Capacidad de conexión con la mayoría de los motores de base de

datos que se utilizan en la actualidad. Se destaca su conectividad con

MySQL y PostgreSQL.

Capacidad de expandir su potencial utilizando la enorme cantidad de

módulos (llamados ext's o extensiones).

Posee una amplia documentación en su página oficial, entre la cual se

destaca que todas las funciones del sistema están explicadas y

ejemplificadas en un único archivo de ayuda.

Es libre, por lo que se presenta como una alternativa de fácil acceso

para todos.

<?php

$saludo = "Hola";

echo $saludo;

?>

Page 53: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web

Concepto Características ¿Las implementa?

Abstracción Variables de instanciaMétodos de instanciaVariables de claseMétodos de clase

SíSíSíSí

Encapsulamiento De variablesDe métodos

Público, Privado, ProtegidoPúblico, Privado, Protegido

Modularidad Tipos de módulo Fichero

Jerarquía HerenciaUnidades genéricasMetaclases

SimpleNoNo

Tipos Comprobación estrictaPolimorfismo

SíNo

Concurrencia Multitarea Indirectamente(mediante clases)

Persistencia Objetos persistentes No

Page 54: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web

Su sintaxis básica deriva de C/C++.

A diferencia de PHP, es compilado.

Utiliza el modelo de objetos de la plataforma .NET (o dicho de

otra manera, .NET Framework), el cual es similar al de Java,

aunque incluye mejoras derivadas de otros lenguajes (entre

ellos Delphi).

Aunque forma parte de la plataforma.NET, C# es un lenguaje

de programación independiente diseñado para generar

programas sobre dicha plataforma.

Una variable de objeto de cierta clase no almacena los valores

del objeto sino su referencia (al igual que Java).

El operador de asignación no copia los valores de un objeto,

sino su referencia a él (al igual que Java).

Page 55: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web

Un constructor tiene el mismo nombre que su clase y es

sintácticamente similar a un método.

Un constructor no devuelve ningún valor.

Al igual que los métodos, los constructores también pueden

ser sobrecargados.

Si no se especifica un constructor en una clase, se usa uno por

defecto que consiste en asignar a todas las variables el valor

de 0, null o false según corresponda.

Para crear un nuevo objeto se utiliza la siguiente sintaxis:

variable = new nombre_clase();.

Un destructor se declara como un constructor, aunque va

precedido por el signo ~.

Page 56: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web

Se emplea una desasignación de memoria de objetos no

referenciados (recolección de basura), y cuando esto ocurre se

ejecuta el destructor de dicha clase.

El destructor de una clase no se llama cuando un objeto sale

del ámbito.

Todos los destructores se llamarán antes de que finalice un

programa.

La palabra clave this es un apuntador al mismo objeto en el

cual se usa.

La palabra clave static hace que un miembro pertenezca a una

clase en vez de pertenecer a objetos de dicha clase. Se puede

tener acceso a dicho miembro antes de que se cree cualquier

objeto de su clase y sin referencias a un objeto.

Page 57: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web

Un método static no tiene una referencia this.

Un método static puede llamar sólo a otros métodos static.

Un método static sólo debe tener acceso directamente a

datos static.

Un constructor static se usa para inicializar atributos que se

aplican a una clase en lugar de aplicarse a una instancia.

C# permite la sobrecarga de operadores con la palabra clave

operator.

Page 58: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web

Concepto Características ¿Las implementa?

Abstracción Variables de instanciaMétodos de instanciaVariables de claseMétodos de clase

SíSíSíSí

Encapsulamiento De variablesDe métodos

Público, Privado, ProtegidoPúblico, Privado, Protegido

Modularidad Tipos de módulo Fichero

Jerarquía HerenciaUnidades genéricasMetaclases

SimpleNoNo

Tipos Comprobación estrictaPolimorfismo

SíSí

Concurrencia Multitarea Indirectamente(mediante clases)

Persistencia Objetos persistentes Sí (Web Forms)

Page 59: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web
Page 60: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web
Page 61: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web
Page 62: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web
Page 63: Desarrollo de Aplicaciones Web II - Sesión 05 - Evolución de los lenguajes POO y la Web