Está en la página 1de 73

INSTITUTO TECNOLOGICO SUPERIOR DE ZONGOLICA

PROGRAMACION ORIENTADA A OBJETOS

LSC. RAFAEL JUAN CORDOBA DE LA LLAVE

MAYO 2014

INTRODUCCION
El desarrollo de software en la actualidad ha tomado mucho auge debido a
la existencia de lenguajes ms amigables. Cada da es ms fcil programar. La
tecnologa de los objetos ha logrado que el llamado programador pase a ser
armador de programs, es decir, solo arma mdulos de programacin que alguien
hizo y el rea de la programacin pasa a disminuir, segn el tipo de programa.
Es un hecho que programar orientado a objetos facilita la programacin y eso
repercute en los tiempos de desarrollo, lo cual vienen a disminuir
considerablemente y tambin se reduce el costo un programa.

PROPOSITO

CONTENIDO

El Propsito del curso es proporcionar al alumno los conocimientos necesarios


para que pueda programar orientado a objetos.
El enfoque sugerido para la materia requiere que las actividades prcticas
promuevan el desarrollo de habilidades para la resolucin de problemas, tales
como:
identificacin, manejo, control de variables, datos relevantes, planteamiento de
hiptesis, trabajo en equipo, asimismo, propicien procesos intelectuales como
induccin-deduccin y anlisis-sntesis con la intencin de generar una actividad
intelectual compleja; las actividades tericas se han descrito como actividades
previas al tratamiento practico de los temas. En las actividades prcticas
sugeridas, es conveniente que el profesor slo guie al estudiante en la
construccin de su conocimiento.
En la primera unidad se presentan los conceptos de la programacin orientada a
objetos, teniendo la intencin de introducir al estudiante en los elementos del
modelo de objetos as como el uso bsico del lenguaje de modelado unificado.
La segunda unidad se centra en la definicin e implementacin de clases y objetos
permitiendo al estudiante adquirir las competencias fundamentales de la
programacin orientada a objetos.
La tercera unidad tiene como propsito la creacin de objetos que incorporen
propiedades y mtodos de otros objetos, construyndolos a partir de stos sin
necesidad de reescribirlo todo.
La cuarta unidad trata una de las caractersticas fundamentales de la
programacin orientada a objetos; el polimorfismo, que permite reutilizar mtodos

con el mismo nombre, pero con relacin a la clase a la que pertenece cada uno,
con comportamientos diferentes.
En la quinta unidad el estudiante adquirir los conocimientos para tratar
situaciones
excepcionales que se presentan en tiempo de ejecucin.
La unidad seis, el estudiante aplica las operaciones necesarias para el manejo de
archivos de texto y binarios, temas que se utilizarn en materias posteriores.

OBJETIVO
Disear e implementar objetos de programacin que permitan resolver situaciones
reales y de ingeniera.

COMPETENCIAS PREVIAS Y RELACION CON CURSOS ANTERIORES Y


POSTERIORES
Analizar, disear y desarrollar soluciones de problemas reales utilizando
algoritmos computacionales para implementarlos en un lenguaje de programacin
orientado a objetos.
Su relacin con materias anteriores: Fundamentos de programacin
Su relacin con materias posteriores: Estructura de datos, Tpicos avanzados de
programacin, Fundamentos de ingeniera de software, Ingeniera de software.
Todo lo referente a programacin es lo que debe poner atencin el alumno para
desarrollar programas orientados a objetos con calidad y eficiencia.

CONTENIDO

UNIDAD 1 Introduccin al paradigma de la programacin orientado a


objetos.
1.1 Elementos del modelo de objetos: clases, objetos, abstraccin, modularidad,
encapsulamiento, herencia y polimorfismo.
1.2 Lenguaje de modelado unificado: diagrama de clases.

UNIDAD 2 Clases y objetos.


2.1 Declaracin de clases: atributos, mtodos, ncapsulamiento.
2.2 Instanciacin de una clase.
2.3 Referencia al objeto actual.
2.4 Mtodos: declaracin, mensajes, paso de parmetros, retorno de valores.
2.5 Constructores y destructores: declaracin, uso y aplicaciones.
2.6 Sobrecarga de mtodos.
2.7 Sobrecarga de operadores: Concepto y utilidad, operadores unarios y binarios.

UNIDAD 3 Herencia.
3.1 Definicin: clase base, clase derivada.
3.2 Clasificacin. herencia simple, herencia mltiple.
3.3 Reutilizacin de miembros heredados.
3.4 Referencia al objeto de la clase base.
3.5 Constructores y destructores en clases derivadas.
3.6 Redefinicin de mtodos en clases derivadas.

UNIDAD 4 Polimorfismo.

4.1 Definicin.
4.2 Clases abstractas: definicin, mtodos abstractos, implementacin de clases
abstractas, modelado de clases abstractas.
4.3 Interfaces: definicin, implementacin de interfaces, herencia de interfaces.
4.4 Variables polimrficas (plantillas): definicin, uso y aplicaciones.
4.5 Reutilizacin de cdigo.

UNIDAD 5 Excepciones.
5.1 Definicin.
5.2 Tipos de excepciones.
5.3 Propagacin de excepciones.
5.4 Gestin de excepciones: manejo de excepciones, lanzamiento de
excepciones.
5.5 Creacin y manejo de excepciones definidas por el usuario.

UNIDAD 6 Flujos y Archivos.


6.1 Definicin.
6.2 Clasificacin: Archivos de texto y binarios.
6.3 Operaciones bsicas y tipos de acceso.
6.4 Manejo de objetos persistentes.

COMPETENCIAS A ALCANZAR EN EL CURSO

Al trmino del curso el participante:


Unidad 1: Introduccin al paradigma de la programacin orientado a objetos.
Comprender, describir y modelar los conceptos principales del paradigma de
programacin orientado a objetos y aplicarlos a situaciones de la vida real.
Unidad 2: Clases y objetos.
Implementar clases y objetos cumpliendo las reglas de la programacin orientada
a objetos.
Implementar constructores y destructores para inicializar atributos y liberar
recursos.
Sobrecargar mtodos y operadores para optimizar el cdigo de una clase.
Unidad 3: Herencia.
Implementar la herencia en clases derivadas para reutilizar los miembros de una
clase base.
Unidad 4: Polimorfismo.
Implementar interfaces y clases polimrficas.
Unidad 5: Excepciones.
Identificar, manejar, gestionar y crear las condiciones de error que interrumpan el
flujo normal de ejecucin de un programa.

Unidad 6: Flujos y archivos.


Implementar aplicaciones orientadas a objetos que creen y manipulen archivos
para guardar y recuperar informacin.

UNIDAD 1 Introduccin al POO


Competencia especfica de la unidad:
Comprender, describir y modelar los conceptos principales del paradigma de
programacin orientado a objetos y aplicarlos a situaciones de la vida real.

1.1 Evolucin de los paradigmas de programacin


Evolucin de las metodologas de programacin
En un inicio, los lenguajes de programacin no tenan una metodologa de programacin,
por lo que a los desarrolladores slo les interesaba generar los programas para solucionar
los problemas emergentes en sus empresas, lo que traa como consecuencia miles de lneas
de cdigo, los cuales eran inaccesibles, incluso para los mismos programadores; darle
mantenimiento al programa o realizar modificaciones era casi imposible. Esta expansin sin
control tuvo como consecuencia lgica la llamada Crisis del Software. Han existido
diferentes etapas en el desarrollo de software, las cuales son:

Cdigo Espagueti o programacin secuencial


Eran instrucciones de manera secuencial, no existan funciones y los tipos de datos eran
globales. En este tipo de programas son grandes lneas de cdigo, donde lo nico claro es el
inicio y el fin del programa, y dentro del cdigo hace llamados a diferentes lneas de
cdigo, lo que las hace confusas y difciles de modificar.

Programacin estructurada
Separa los datos de las funciones que los manipulan. Como se muestra en la Figura 1, en
donde el dato 2 es utilizado nicamente por el subprograma 2, pero el dato 3 es empleado
por los subprogramas 1 y 2. Este tipo de programacin surgi como solucin a la
programacin secuencial. En esta etapa los programas son divididos por tareas concretas,
de tal forma que exista un programa principal que haca un llamado a los subprogramas
(funciones) cada vez que requera una tarea en especfico. Este tipo de programacin ha
sido muy usada, en lenguajes de programacin como C, Pascal, etc. Probablemente sea
familiar para ti porque en los cursos de programacin anteriores has realizado programas
estructurados, el programa principal est representado por la funcin main y cada funcin

son los subprogramas controlados por la funcin main.

Programacin orientada a objetos


Tambin existen datos y funciones, pero stos se encapsulan por medio de objetos.
Objeto: Es una entidad del mundo real que se puede describir en funcin de sus
caractersticas (propiedades) y comportamientos (mtodos).

UNIDAD 2 Clases y objetos


Competencia especfica de la unidad:
Implementar clases y objetos cumpliendo las reglas de la programacin orientada
a objetos.
Implementar constructores y destructores para inicializar atributos y liberar
recursos.
Sobrecargar mtodos y operadores para optimizar el cdigo de una clase.

Fundamentos de la programacin visual


Un lenguaje de programacin es, como todo lenguaje en general, un dialecto; es decir, un
conjunto de convenciones utilizadas para comunicarse. De este modo, a travs de un
dialecto que con el tiempo ha ido evolucionando y mejorando, incluso volvindose ms
amigable a la comprensin humana, sta es la forma en que el hombre se comunica con las
mquinas. Hace tiempo, el trmino programacin se refera a una codificacin lineal
absolutamente crtica y misteriosa, tal vez sea familiar el desarrollo de programas en este
tipo de lenguajes (Figura 1), debido a que en los cursos anteriores has programado en C, y
supongo que muchas veces te has preguntado cmo y cundo podrs desarrollar programas
con interfaces visuales, en este curso se analizar cmo desarrollar programas con
interfaces grficas.

Figura 4. Programa en modo texto


Con la llegada de la informtica grfica todo es visual. Usando los lenguajes tradicionales
de programacin, los programadores tenan grandes dificultades para implementar aquellos
aspectos grficos que dominan las tareas a desarrollar en los nuevos entornos grficos.

Figura 5. Programa en lenguaje visual

La Programacin Visual parte de los lenguajes clsicos de programacin (C, Basic, Pascal),
generalmente lenguajes orientados a objetos, y descarga de ellos las tareas ms tediosas
como el control de los eventos o la puesta en escena grfica. Adems, dichos lenguajes de
programacin cuentan con ayudas para componentes visuales, asistentes, etc., que facilitan
ms la tarea del programador.
Algunos de los lenguajes visuales han sido denominados RAD (Rapid Application
Development), ya que tienen entre su misin acortar el tiempo necesario para realizar un
proyecto.
Por parte de Microsoft los lenguajes visuales forman parte de la plataforma Visual Studio,
que incluyen, entre otros, los lenguajes Visual C++ y el Visual Basic, Borland por su parte,

tienen el Borland C++ Builder y el exitoso Delphi, lenguaje visual derivado del Object
Pascal.
Los componentes de los lenguajes visuales tienen una parte grfica, parcialmente ajena a la
programacin sin ampliar el cdigo fuente. Tiene otra parte de programacin al estilo
clsico en donde las funciones son ejecutadas por medio de eventos que se disparan en
funcin de las acciones del usuario sobre la parte grfica.
De esta manera, el programador dedica su mayor esfuerzo en trabajar para encontrar la
solucin del problema. En estos lenguajes, simplemente se dibujan los botones, cajas de
texto y otros objetos visuales (a los que comnmente se les denomina controles) que
intervendrn en la ventana de la aplicacin y, en cada uno de ellos, se proporciona el acceso
a los eventos que puede responder cada objeto sin necesidad de escribir una sola lnea de
cdigo, ya que el lenguaje de programacin realiza esta tarea en forma transparente al
programador.

Programacin orientada a eventos


Como ya se mencion en el tema anterior, existen distintos tipos de programas
(inicialmente los programas eran de tipo secuencial). Un programa secuencial es un
programa que se arranca, lee los datos que necesita, realiza los clculos e imprime o guarda
en el disco los resultados. Mientras un programa secuencial est ejecutndose no necesita
ninguna intervencin del usuario. A este tipo de programas se les llama tambin programas
basados u orientados a procedimientos o a algoritmos (procedural languages).
Ejemplos de estos programas son PowerPoint, Internet Explorer y cualquier otro programa
que al iniciar espera las acciones del usuario que son llamadas eventos. Por ejemplo,
cuando se ejecuta Microsoft Word, puedo realizar diferentes acciones, ya sea abrir un
documento, hacer un nuevo documento, etc. Las acciones que el usuario puede realizar en
un momento determinado son variadsimas, y exigen un tipo especial de programacin: la
programacin orientada a eventos. Este tipo de programacin es sensiblemente ms
complicada que la secuencial, pero con los lenguajes visuales de hoy, se hace sencilla y
agradable.
Antes de continuar, es necesario definir algunos conceptos de los elementos de
Programacin Orientada a Eventos.
Evento: Son las acciones del usuario sobre el programa. Son eventos tpicos el click sobre
un botn, el hacer doble click sobre el nombre de un fichero para abrirlo, el arrastrar un
icono, el pulsar una tecla o combinacin de teclas, el elegir una opcin de un men, el
escribir en una caja de texto, o simplemente mover el ratn.

Figura 6. Click .
Propiedades y mtodos

Adems de los eventos, la mayor parte de los objetos, como los formularios y los controles,
son suministrados con propiedades y mtodos.
Propiedades: Una propiedad es una asignacin que describe algo sobre un objeto, como un
formulario. Dependiendo de la propiedad, se la puede asignar en tiempo de diseo usando
la ventana Propiedades y/o en tiempo de ejecucin al programar. Las propiedades tambin
son llamadas caractersticas, por ejemplo, las propiedades de una persona son: nombre,
edad, sexo, estado civil, etctera.
A continuacin, describimos dos ejemplos de las propiedades del formulario en Delphi:
Text: Esta propiedad especifica el texto asignado a una Tedit.
Width: Indica el tamao de un componente.
Mtodos: Son funciones que tambin son llamadas desde el programa, pero a diferencia de
los procedimientos no son programadas por el usuario, sino que vienen ya pre-programadas
con el lenguaje. Los mtodos realizan tareas tpicas, previsibles y comunes para todas las
aplicaciones. De ah que vengan con el lenguaje y que se libere al usuario de la tarea de
programarlos. Cada tipo de objeto o de control tiene sus propios mtodos.
En general, los mtodos slo pueden ser usados en tiempos de ejecucin, no en tiempo de
diseo. Algunos ejemplos de mtodos de formularios son el mtodo SHOW, que muestra
un formulario.
Los mtodos son invocados dando nombres al objeto y cuyo mtodo se est llamando,
listando el operador punto (.), y despus listando el nombre del mtodo. Como cualquier
rutina, los mtodos pueden incorporar argumentos.
Por ejemplo:
Miforma.show();
Este mtodo Show carga y muestra un formulario, dos acciones distintas que forman parte
del proceso de nacimiento o inicio a un formulario (al ejecutar el formulario de inicio se
carga tambin el formulario y despus se muestra). El mtodo Show puede ser invocado
como no modal o modal. Modal significa que no se ejecuta ningn cdigo posterior hasta
que el formulario se oculte o se descargue. Cuando se muestra un formulario modal no se
puede producir ninguna entrada de usuario (de teclado o click del ratn), excepto para los
objetos del formulario modal.

Tarea 1. Cuadro comparativo de paradigmas de


programacin
Instrucciones:Desarrolla de manera individual, un cuadro comparativo entre la
programacin lineal, estructurada y orientada a objetos con base en el nivel de
complejidad que existe al realizar modificaciones a los programas, y en la forma en que se
agrupan los datos y funciones.

Forma en que Permite la creacin Eficiencia de los Facilidad para


se agrupan los
de funciones
programas
realizar
datos
mantenimiento
a los programas

Programacin
secuencial
Programacin
estructurada
Programacin
orientada a
objetos

M1

Principios bsicos de la programacin orientada a


objetos

Objetivo
El estudiante desarrollar un directorio telefnico, empleando la programacin orientada a
objetos, para ordenar eficientemente la informacin de los clientes de una empresa.

Preguntas de estudio
1.
2.
3.
4.
5.
6.
7.

Qu es una clase?
Qu es un objeto?
Cul es la diferencia entre objeto y clase?
Cules son los elementos que componen a una clase?
Qu son las propiedades?
Cmo se clasifican los tipos de datos?
Menciona cinco tipos de datos primitivos.Si se requiere almacenar una fecha, qu
tipo de dato se puede emplear?
8. Para qu se emplea el tipo de dato bool?
9. Qu es una constante?
10. Menciona un ejemplo de una constante.
11. Cmo se representan las acciones de una clase?
12. Qu es un mtodo?
13. Qu es void?
14. Para qu se usa la palabra reservada return?
15. Qu es un objeto?
16. Qu es una clase?
17. Cul es la funcin del constructor?Para qu sirve el destructor?

Introduccin
En este mdulo se especifican los principios de la programacin orientada a objetos, y su
facilidad para programar por enfocarse ms a la manera en que piensa el ser humano. La
clave de este paradigma es agrupar las variables y funciones en objetos y acceder a stos
por medio de interfaces. En este tema no se programarn todava en el entorno visual, sino
que haremos programas en modo consola. Los temas que se tratarn en este mdulo son:
Clases: En este tema se identifican las caractersticas, comportamientos u operaciones que
se pueden realizar con cada objeto.
Construccin del estado de un objeto: Cada objeto tiene diversas caractersticas, por
ejemplo, un objeto materia tiene un nombre, crditos y semestre; y cada una de estas
caractersticas corresponden a un tipo de dato distinto en el lenguaje de programacin.

Diseo de mtodos: Se refieren a las acciones que se pueden realizar en un objeto en


especfico, cada objeto puede tener varias acciones, dependiendo de las funciones que se
vayan a realizar.
Los objetos como instancias de las clases: En este tema se visualizar que las clases no
pueden almacenar datos tal y como lo hacen las variables que hemos empleado en los
lenguajes de programacin, razn por la cual debemos crear objetos a partir de las clases.
Este mdulo te servir de base para iniciar la programacin en un lenguaje visual; acude
con tu profesor titular, en caso de que necesites despejar cualquier duda.

Programacin orientada a objetos


En el mdulo pasado estuvimos analizando tres paradigmas de programacin (secuencial,
estructurado y orientado a objetos), y llegamos a la conclusin de que la programacin
orientada a objetos es la ms eficiente y que resuelve dos problemas principales de los
paradigmas de programacin anteriores; el primer problema es obligar a un programador a
pensar como la mquina, y el segundo es que si se hiciera un cambio en el formato de
alguno de los datos se deben modificar todas las funciones del programa que utilizarn este
dato.

Por qu la programacin orientada a objetos resuelve los problemas mencionados? Esto


sucede porque un objeto es una representacin de la vida real, es decir, de la forma
cotidiana de pensar de las personas. Adems, los datos globales que eran empleados por
todos los programas desaparecen, en su lugar cada objeto tiene sus propias funciones y
datos y si se modifica la estructura de un dato slo afecta a ese objeto. A continuacin, se
muestran dos figuras donde se compara la organizacin de los datos en la programacin
estructurada y la orientada a objetos.

En la programacin orientada a objetos existen elementos muy importantes que son: clases,
objetos, propiedades y mtodos.

Clase:
Es la descripcin de las propiedades de los objetos en conjunto con las operaciones que se
permiten con ellos. Encapsula datos y mtodos, es como un lenguaje para definir nuevos
tipos de datos dentro del lenguaje.
Una clase define el comportamiento y atributos de un grupo de objetos de caractersticas

similares.

Objeto:
Es una entidad del mundo real que se puede describir en funcin de sus caractersticas y
comportamientos.
Si observas las definiciones, existe una relacin muy estrecha entre la clase y el objeto, por
lo que podemos decir que una clase es unin de varios objetos. Por ejemplo, se podra decir
que una clase es como un molde y los objetos son las gelatinas que se realizan con ese
molde, como se muestra en la Figura 3. Se puede observar que cada gelatina tiene la misma
forma, pero el color, el sabor y los ingredientes con los que fueron preparadas son distintos;
de la misma forma sucede con los objetos, todos tienen las mismas propiedades y mtodos,
pero con valores distintos.

Figura 3. Analoga entre clases y el molde de una gelatina.

Analizando ejemplos ms afines con un lenguaje de programacin, podemos mencionar una


clase "alumno", y los objetos sern cada uno de los alumnos existentes en una escuela, tal
como se muestran en la Figura 4.

Figura 4. Clase "alumno".


Las clases estn compuestas por propiedades y mtodos, en este caso slo se explicarn a
grandes rasgos estos elementos, debido a que en temas posteriores se detallarn.
Propiedades:
Son las caractersticas de un objeto, volviendo al ejemplo de la clase "alumnos", las
propiedades pueden ser:

Nombre
Sexo
Semestre
Direccin

Si analizamos lo anterior, podemos decir que todos los objetos (Luis, Jorge, Ana) tienen las
mismas propiedades, pero cada uno tiene valores distintos, como se muestra en la Tabla 1;
por lo tanto, podemos resumir que un conjunto de objetos que comparten las mismas
propiedades forman una clase.
Nombre del
objeto
Luis
Jorge
Ana

Sexo
Masculino
Masculino
Femenino

Semestre
3
2
6

Direccin
Av. Carpio.
Av. Jazmn
Av. Los Cedros.

Mtodos:
Son las operaciones que se pueden realizar sobre el objeto, tambin llamadas acciones.
Existen mtodos pblicos, tambin conocidos como interfaces, que son los que se
comunican con otros objetos; y mtodos privados, que realizan operaciones internas entre
los objetos. Ejemplos de mtodos pueden ser las operaciones que se pueden hacer sobre un
objeto alumno, como son:

Inscribirlo
Modificar sus datos
Incrementar semestre
Baja de la institucin

En resumen, una clase contiene propiedades y mtodos y, si observas, esta forma de


programar est relacionada con la vida real. De acuerdo con UML, una clase se representa
como un rectngulo con tres divisiones (nombre, propiedades y mtodos), como se muestra
en la Figura 5.

Figura 5. Clase alumno.

Construccin del estado de un objeto


El estado de un objeto se representa por medio de los atributos, o tambin llamados
propiedades. Como ya se vio en el tema anterior, el conjunto de objetos que tienen las
mismas propiedades se llaman clases.

Propiedades
Son las caractersticas individuales que diferencian a un objeto de otro (Ceballos, 2006).
Por ejemplo, en un supermercado se puede identificar la clase "producto", con las
propiedades:

Cdigo de barras
Nombre
Precio
Tipo de producto
Presentacin

Cada una de estas propiedades almacenar valores de diversos tipos, el cdigo de barras
almacenar nmeros, el nombre almacenar caracteres alfabticos y, posiblemente,
nmeros (por ejemplo, bold 3), el precio ser un valor numrico con punto decimal y as
sucesivamente. En los cursos de programacin pasados ya hemos analizado que existen
diferentes tipos de datos para almacenar valores, de igual forma sucede con lenguajes de
programacin visual como C#.Net, slo cambia un poco la nomenclatura y pueden existir
algunas variantes con estos tipos, pero, en general, en cualquier lenguaje de programacin
existen dos tipos de datos, los cuales son:

Tipos de datos primitivos


Nos referimos a los tipos primitivos de un lenguaje cuando hablamos de tipos de datos ya
definidos y de los que se puede partir para la construccin de expresiones o tipos de
compuestos. A continuacin se muestra una tabla de los tipos de datos primitivos de C#.

Tipo Descripcin
SByte Bytes con
signo.
Byte
Bytes sin
signo.
Int16 Enteros
cortos con

Bits
8
8
16

Rango de valores
-128 127
0 255
[-32.768, 32.767]

Alias
sbyte
byte
short

signo.
UInt16 Enteros
cortos sin
signo.
Int32 Enteros
normales.
UInt32 Enteros
normales sin
signo.
Int64
Enteros
largos.

[0, 65.535]
16
32

ushort
[-2.147.483.648,
2.147.483.647]
[0, 4.294.967.295]

32

64

int
uint

[9.223.372.036.854.775.808,
9.223.372.036.854.775.807]
[018.446.744.073.709.551.615]

UInt64 Enteros
largos sin
64
signo.
Single Reales con 7
[1,510-45 - 3,41038]
dgitos de
32
precisin.
Double Reales de
[5,010-324 - 1,710308]
15-16
64
dgitos de
precisin.
DecimalReales de
[1,010-28 - 7,91028]
28-29
128
dgitos de
precisin.
Boolean Valores
true, false
32
lgicos.
Char
Caracteres
[\u0000, \uFFFF]
16
Unicode.
String Cadenas de
El permitido por la memoria
Variable
caracteres.
Object Cualquier
Cualquier objeto
Variable
objeto.
Data
1/enero/1 a
Fechas y
Time
8
31/diciembre/1999
horas.
00:00:00 AM a 11:59:59 PM

long

ulong

float

double

decimal

bool
char
string
Object
Data Time

Casi todos los tipos de datos los hemos estudiado en los cursos pasados de programacin, a
excepcin del tipo de dato bool, el cual permite almacenar valores true o false, es decir,
falso o verdadero, los cuales son contrapuestos, de tal manera que un dato de tipo lgico
siempre est asociado a que algo se cumpla o no se cumpla. Ejemplo: Casado (true o false).

Retomando el tema de propiedades de una clase, podemos clasificarlas de acuerdo con el


tipo de dato que almacenarn; para la clase producto los tipos de datos de cada propiedad
son:
Tipo de dato
Propiedad
Cdigo de barras
Nombre
Precio
Tipo de producto

string
string
float
string

Tipos de datos compuestos


Consiste en unir tipos de datos primitivos, ya sea del mismo o de diferente tipo. Se dividen
en:

Matrices: Es un conjunto de elementos del mismo tipo y se accede a estos elementos por
medio de ndices. Existen matrices unidimensionales, multidimensionales y escalonadas
(matrices donde sus elementos son matrices).

Estructura: Este tipo de dato ya lo hemos empleado en el curso de estructura de datos, y


recordars que se refiere a agrupar variables de diferentes tipos con un mismo nombre. Los
tipos de datos estructura fueron la base para la declaracin de clases.

Mtodos de acceso a las propiedades


Los atributos o propiedades deben ser encapsulados dentro del objeto para ser protegidas de
posibles modificaciones de otros objetos, es por esto que existen diferentes mtodos de
acceso. Cabe destacar que los mtodos de acceso no slo son aplicables a las propiedades,
tambin pueden aplicarse a los mtodos y controles. En la siguiente tabla se describen los
mtodos de acceso y su significado.

Mtodos de
acceso
Public
Protected

Significado
Acceso no restringido.
Acceso limitado a la clase contenedora o a los tipos derivados
de esta clase.
Internal
Acceso limitado al proyecto actual.
Protected internal Acceso limitado al proyecto actual o a los tipos derivados de
la clase contenedora.
Private
Acceso limitado al tipo contenedor.

En C#, las clases se definen empleando la siguiente sintaxis:


class nombre_clase
{
ambito_propiedad tipo_propiedad nombre propiedad;
}
La clase producto se definira de la siguiente forma:
class producto
{
private string cod_barras;
private string nombre;
private float precio;
private string tipo_prod;
}
Constantes
Como recordars, una constante es un valor que no puede ser cambiado durante la
ejecucin del programa. La sintaxis para declarar constantes es:
const <tipoConstante> <nombreConstante> = <valor>;
Para declarar la constante pi se realizara de la siguiente manera:
const float pi=3.1416.

Diseo de mtodos
El comportamiento de un objeto queda definido por las acciones que puede emprender.
Para definir este comportamiento se pueden utilizar tanto mtodos como propiedades. Los
mtodos representan acciones que un objeto puede realizar, mientras que las propiedades
representan informacin sobre un objeto. Por ejemplo, la clase "alumnos" tiene varias
acciones, como pueden ser:

Inscribir al alumno al nuevo semestre.


Incrementar el semestre.
Dar de baja al alumno.
Consultar sus datos.
Cambiar su domicilio.

Un mtodo
Se puede definir como rutinas de cdigo definidas dentro del cuerpo de la clase, que se
ejecutan en respuesta a alguna accin tomada desde dentro de un objeto de esa clase, o bien
desde otro objeto de la misma o de otra clase (Ceballos, 2006).

Definicin de un mtodo
Los mtodos constan de una cabecera y del cuerpo del mtodo encerrado entre llaves. La
sintaxis es la siguiente:

[mtodo de acceso] valor_de_retorno nombre_mtodo([parmetros])


{
[definicin de variables];
Sentencias;
[return expresion]
}

Donde, mtodos de acceso:


Tal y como los atributos deben ser encapsulados para ser protegidos, tambin los mtodos
requieren cierta proteccin, aunque sta debe ser menor, ya que deben existir mtodos que
se comuniquen con otros objetos, los cuales son llamados interfaces. Los mtodos de
acceso son los mismos que los descritos en las propiedades.

Valor de retorno:
Especifica el tipo de expresin que retorna el mtodo. Puede ser de cualquier tipo de dato
primitivo o compuesto, incluyendo una clase. Adems, existe el valor (void), que indica que
la funcin no devolver ningn valor.

Return:
Es la instruccin que se encarga de devolver el resultado de la funcin. En caso de una
funcin void, se puede escribir return, sin especificar ningn valor.

Parmetros:
Son las variables que reciben los valores de los argumentos especificados cuando se
invocan los mismos. Consiste en una lista de cero, uno o ms identificadores con sus tipos,
separados por comas.

Como ya sabemos cmo se definen los mtodos, vamos a realizar un mtodo para
incrementar el semestre en la clase "alumno".

public void inc_sem


{
semestre= semestre+1;
System.console.WriteLine(semestre);
}
Si observas, el mtodo de acceso es public para que pueda ser llamado desde otra clase.
Como no requiere enviar ningn resultado, empleamos void.

Mtodo Main:
Todo programa C# tiene un mtodo denominado Main. Este mtodo es el punto de entrada
al programa, y tambin el punto de salida. Se define de la siguiente manera:

public static void Main(string[] args)


{
//sentencias;
}

Recuerda que desde el inicio del mdulo hemos hablado de la clase "alumnos" y poco a
poco la hemos codificando, finalmente la clase alumnos se ha concluido, identificando
propiedades y mtodos.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30

using System;
using System.Collections.Generic;
using System.Text;
namespace clase_alumno
{
class calumno
{
private string num_control;
private string nombre;
private sbyte edad;
private sbyte semestre;
public void asigna_num_control( string xnum_control)
{
num_control = xnum_control;
}
public void asigna_nombre( string xnombre)
{
nombre = xnombre;
}
public void asigna_edad( sbyte xedad)
{
edad = xedad;
}
public void asigna_sem( sbyte xsem)
{
semestre = xsem;
}
public sbyte inc_semestre()
{

31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46

semestre++;
return semestre;
}
{
return num_control;
}
public string retorna_nombre()
{ return nombre;
}
public sbyte retorna_edad()
{ return edad;
}
public sbyte retorna_sem()
{
return semestre;
}

47.}
48. }
49. }
En la lnea 6 se especifica el nombre de la clase. Las lneas 8 a 11 especifican las
propiedades de la clase, desde las lneas 12 a 32 se codifican los mtodos.
Si analizamos los mtodos, observaremos que existen dos mtodos por cada propiedad de la
clase (asigna_num_control y retorna_num_control), esto debe realizarse as porque las
propiedades tienen un acceso private, lo que significa que no es posible acceder a las
propiedades de la clase desde otra clase, es por esto que necesitamos mtodos pblicos que
manipulen las propiedades privadas.

Haz click aqu , para seguir las instrucciones de instalacin de C# .Net y la creacin de
proyectos.

Instalacin C# .Net Express


Para instalar el Visual Studio C#, es necesario lo siguiente:
1. Microsoft Windows XP.
2. Service Pack 2: Puedes descargarlo de esta direccin:
http://www.microsoft.com/downloads/details.aspx?familyid=049c9dbe-3b8e-4f308245-9e368d3cdb5a&displaylang=en

3. .Net Framework: Haz click en esta direccin para descargarlo:


http://msdn.microsoft.com/vstudio/express/downloads/default.aspx
4. Visual C# Express .Net: Una vez que ya estn instalados los programas, haz click
en esta direccin para descargar el Visual C# .Net:
http://msdn.microsoft.com/vstudio/express/downloads/default.aspx
Para empezar a usar C# Express, haz clickaqu.

Los objetos como instancias de las clases


En los temas anteriores hemos creado clases y definido sus propiedades y mtodos, pero no
se ha comentado cmo crear objetos a partir de esas clases, regresando a la analoga de la
gelatina, podemos decir que hemos visto cmo construir los moldes, pero no hemos visto
cmo se realizan las gelatinas.

Para poder crear objetos de una clase y trabajar con ellos, se requiere un mtodo Main, ya
que es el punto de entrada y salida de cualquier programa.

Existen varias formas de crear un mtodo Main, pero vamos a tomar la ms sencilla y,
sobre todo, porque es la forma que ms se aplica en la programacin orientada a objetos. Y
consiste en crear otro archivo (almacenndolo en almacenado en la misma carpeta que la
clase) que contenga el mtodo Main.

Creacin de objetos:
Tambin se denominan instancias de las clases, y se refiere a emplear las clases como si
fueran tipos de datos y a partir de esto crear objetos que permitan almacenar informacin,
es muy importante comentar que las clases por s solas no pueden almacenar valores, por lo
que es necesario crear objetos. La instancia de una clase se realiza de la siguiente manera:
Nombre_clase nombre_objeto = new Nombre_clase();
Por ejemplo, para crear un objeto a partir de la clase alumno, se hara:

CAlumno alumno1 = new CAlumno();


El programa dentro de la funcin Main se vera de la siguiente forma:
1. static void Main(string[] args)
2. {
3. sbyte nuevo_sem;
4. calumno alumno = new calumno();
5. Console.WriteLine("Creacin del objeto alumno ");
6. alumno.asigna_num_control("96010313");
7. alumno.asigna_nombre("Fernando");
8. alumno.asigna_edad(24);
9. alumno.asigna_sem(2);
10. nuevo_sem=alumno.inc_semestre();
11. System.Console.WriteLine("El nuevo semestre es " + nuevo_sem);
Console.ReadKey();
1. }
2. }

En la lnea 4 se define el objeto alumno; posteriormente, las lneas de la 6 a la 9 se llaman a


los mtodos pblicos de la clase calumno para asignarle valores a las propiedades privadas.
En la lnea 10 se llama al mtodo inc_semestre para incrementar el semestre.

Constructores:
Un constructor es un mtodo especial de una clase que es llamado automticamente
siempre que se crea un objeto de esa clase. Su funcin es iniciar el objeto (Ceballos, 2006).
El constructor se distingue de los dems mtodos porque no se especifica el valor de
retorno y lleva el mismo nombre de la clase. Su definicin es:
public nombre_clase(parametros )
{
}
Para la clase alumnos un constructor que inicialice todos los datos de la clase sera:
public calumno(string xnum_control, string xnombre, sbyte xedad, sbyte xsemestre)
{
num_control = xnum_control;
nombre = xnombre;

edad = xedad;
semestre = xsemestre;
}
Probablemente te preguntars, cmo se hizo en el programa anterior en donde no se cre
ningn constructor y an as el programa funcion?, la respuesta es muy simple: en C#
existen constructores por omisin, los cuales no hacen nada, pero sern invocados cada vez
que se construya un objeto sin especificar ningn argumento, en cuyo caso el objeto ser
iniciado con los valores predeterminados por el sistema (propiedades numricas con cero,
propiedades de tipo cadena con espacio en blanco, etc.) Un constructor por omisin se
define:
public nombre_clase
{
}
Para la clase alumnos un constructor por omisin sera:
public calumno()
{
}
Es importante comentar que si se crea un constructor que inicializa un objeto, es buena
prctica de programacin hacer un constructor vaco, porque puede ser necesario crear un
objeto en blanco (sin datos).
A continuacin, te muestro el cdigo de la clase, agregndole el constructor de la clase
alumnos:
class calumno
{
private string num_control;
private string nombre;
private sbyte edad;
private sbyte semestre;
public void asigna_num_control(string xnum_control)
{
num_control = xnum_control;
}
public void asigna_nombre(string xnombre)
{
nombre = xnombre;
}
public calumno() //Constructor implcito
{

}
public calumno(string xnum_control, string xnombre, sbyte xedad, sbyte xsemestre)
{
num_control = xnum_control;
nombre = xnombre;
edad = xedad;
semestre = xsemestre;
}
public void asigna_edad(sbyte xedad)
{
edad = xedad;
}
public void asigna_sem(sbyte xsem)
{
semestre = xsem;
}
public sbyte inc_semestre()
{
semestre++;
return semestre;
}
}
}
El programa que contiene la funcin Main se vera de la siguiente manera:
1. namespace clase_alumno
2. {
3. class Program
4. {
5. static void Main(string[] args)
6. {
7. sbyte nuevo_sem;
8. calumno alumno = new calumno("96010313", "Fernando", 24, 2);
9. calumno alumno_en_blanco = new calumno();
10. Console.WriteLine("Creacin del objeto alumno ");
11. nuevo_sem=alumno.inc_semestre();
12. System.Console.WriteLine("El nuevo semestre es " + nuevo_sem);
13. Console.ReadKey();
14. }
15. }
16. }

En la lnea 9 se declara un objeto denominado alumno_en_blanco, que inicialmente no


contiene datos porque ha sido creado con un constructor implcito, pero que en cualquier
parte del programa se le pueden asignar valores.
Destructores:
Cada vez que creamos un objeto se reserva espacio en memoria, pero qu pasa cuando ya
no se ocupa este objeto?, como liberar espacio en memoria?, C# se encarga de hacerlo
cuando el objeto no se utilice, cosa que ocurre cuando ya no existe ninguna referencia al
mismo. Por ejemplo, cuando finaliza la funcin Main se libera toda la memoria de los
objetos relacionados. Al crear destructores se debe tomar en cuenta lo siguiente:
Los destructores no se pueden definir en estructuras. Slo se utilizan con clases.
Una clase slo puede tener un destructor.
Los destructores no se pueden heredar ni sobrecargar.
No se puede llamar a los destructores. Se invocan automticamente.
Un destructor no permite modificadores de acceso ni tiene parmetros.
La definicin de un destructor se hace de la siguiente manera:
~ Nombre_clase ()
{
//codigo
}
Para la clase alumnos el destructor sera el siguiente:
~calumno()
{
Console.WriteLine(Objeto alumno eliminado);
}
Recuerda que un destructor no puede ser llamado implcitamente, por lo tanto, en la funcin
donde se est creando y operando el objeto (la funcin Main) no sufre ningn cambio y, sin
embargo, podemos visualizar en la Figura 1 que al finalizar el programa s se invoc al
destructor porque se imprime en pantalla el mensaje "Objeto alumno eliminado").

Figura 1. Creacin y destruccin de un objeto.

Y probablemente te preguntes: cmo se destruye el objeto?, no puede ser posible que el


mensaje de objeto alumno eliminado sea una instruccin que libere a un objeto de la
memoria que ocupa, la razn es que C# cuenta con una herramienta denominada recolector
de basura que busca objetos que no se utilizan, con el fin de destruirlos, liberando as la
memoria que ocupan.
Antes de que un objeto sea destruido, C# invoca automticamente al mtodo destructor, lo
que nos permite realizar ciertas operaciones, por ejemplo, cerrar un archivo o base de datos.
Resumiendo, un destructor libera de la memoria a objetos que ya no se usan, C# lo hace
automticamente, y slo se debe codificar un destructor cuando indirectamente el objeto a
destruir haya abierto una base de datos o un archivo o cualquier operacin distinta que no
pueda ser finalizada al destruir el objeto.

Tarea 2. Identificar cinco clases


Instrucciones: Identifica de forma individual, en tu entorno laboral o social cinco clases,
definiendo sus propiedades, as como sus tipos de datos y mtodos de acceso.
Para realizar esta actividad:
1. Identifica los puntos clave del tema.
2. La actividad requiere que observes en tu entorno con una actitud crtica,
recordando que cualquier persona, animal o cosa puede ser representado como
un objeto.
3. Una vez que hayas elegido al objeto, procede a definir la clase, identificando
para cada propiedad el mtodo de acceso, tipo de dato y nombre, como se
muestra en el ejemplo:
class Producto
{
private string cod_barras;
private string nombre;
private float precio;
private string tipo_prod;
}

Tarea 3. Diseo de una clase para crear un directorio


telefnico
Instrucciones: Disea individualmente una clase para almacenar datos en un directorio
telefnico, especificando las propiedades y mtodos necesarios.

Instrucciones para creacin de un proyecto en Visual C# 2005


1.-Abrir el programa Microsoft Visual C# 2005 Express.

2.-Hacer clic en archivo/Nuevo proyecto. Y hacer lo siguiente:


a) Seleccionar Aplicacin de consola.
b) Especificar el nombre del proyecto.
c) En la ubicacin del proyecto, se refiere a la ruta donde ser almacenado el proyecto, aunque C# crea una carpeta por
cada proyecto, te recomiendo crear un directorio para almacenar todos tus proyectos.
d) Hacer clic en aceptar.

3.-A Iniciar a programar!

Tarea 4. Disear la clase Main para un directorio


telefnico

Instrucciones:Realizar de forma individual, la clase con un mtodo Main, para ejecutar la clase del
directorio telefnico.

En los temas anteriores ya se definieron los mtodos y propiedades, pero al ejecutar el


programa notars que no realizaba ninguna accin, esto sucede porque se requiere la
funcin Main en la cual se crea el objeto y se manipulan sus procedimientos y funciones.
La clase Main debe contener un men con las siguientes opciones:
Insercin de datos en el directorio
Consulta de datos
Modificacin de los datos del directorio
Borrar el directorio
Las propiedades de la clase directorio deben ser privadas, por lo tanto, debes emplear los
mtodos para acceder a las propiedades.
Posteriormente, comprime los archivos generados en el programa y nombra a la carpeta
comprimida que vas a subir a la plataforma como se muestra a continuacin:
Tarea4NombreApellido.zip (por ejemplo: Tarea4IsmaelContreras.zip)

Diseo de interfaces grficas

Objetivo

El estudiante disear una interfaz grfica, utilizando el lenguaje de programacin visual,


que servir de base para crear un sistema de informacin enfocado hacia procesos
administrativos.

Preguntas de estudio
1. Cules son los elementos del Entorno Integrado de Desarrollo de Visual Studio?
2. Qu es una solucin?
3. Qu es un proyecto?
4. Qu es una propiedad?
5. Qu es un formulario?
6. Cul es la funcin de la propiedad StartPosition?
7. Cmo se pueden enlazar dos formularios?
8. Qu es icon?
9. Para qu sirve la propiedad WindowState?
10. Cmo se clasifican los controles?
11. Cul es la funcin del label?
12. Para qu sirve la propiedad passwordchar?
13. Para qu se puede emplear la propiedad sizemode?
14. Cules son las dos formas de asegurar la integridad y la consistencia de la base de
datos?
15. Cundo se activa el evento KeyPress?
16. Qu significa que un control tenga el foco?
17. Para qu es empleado en este tema el cdigo ASCII?
18. Cul es la funcin de la clase Canvas?
19. Cul es la funcin del operador "+" en tipos de datos string?
20. Cmo se convierte un tipo de dato entero a string?

Introduccin
Es hora de iniciar con las interfaces grficas, de olvidarse un poco de crear nuestras
interfaces con un sinfn de lneas de cdigo y slo preocuparnos por la funcionalidad de la
aplicacin. Los lenguajes de programacin visual nos proporcionan todas las herramientas
para crear aplicaciones de manera muy intuitiva con slo arrastrar controles sobre los
formularios. En este mdulo los temas que se analizarn son:
Elementos del entorno integrado de desarrollo: Se refiere a la estructura grfica del
entorno integrado de desarrollo de Visual C# 2005 Express.
Formularios: Tambin llamados ventanas, son la base de cualquier aplicacin, en este
tema se abordarn las principales propiedades de los formularios, as como sus eventos y
la forma de controlar a varios formularios en un mismo proyecto.

Controles bsicos y sus propiedades: En todos los lenguajes visuales existe un conjunto de
controles que permite la interaccin con el usuario, ya sea para introducir datos o para
mostrar resultados de cierto proceso. En este tema se analizarn los controles ms
importantes y sus propiedades.
Validaciones en controles de edicin: En cualquier sistema de informacin el usuario no es
el culpable de los errores cometidos, por lo tanto, toda la responsabilidad cae sobre el
programador, quien debe asegurarse de implementar ciertas restricciones sobre los
controles de edicin para evitar que el usuario ingrese datos errneos.
Operaciones aritmticas: Las operaciones aritmticas son un tema sencillo y, sobre todo,
para ti, porque en cursos pasados de programacin has realizado ciertos clculos, pero el
problema radica cuando se desea hacer operaciones con datos introducidos por el usuario
en controles de edicin, ya que stos son de tipo string y, como recordars, las
operaciones aritmticas deben ser realizadas sobre datos numricos.

Diseo de interfaces grficas


Elementos del Entorno Integrado de Desarrollo de Visual C#
En este mdulo iniciaremos con la creacin de interfaces grficas, empleando un lenguaje
de programacin visual que permita ahorrarnos una gran cantidad de lneas de cdigo al
crear etiquetas, botones y dems componentes visuales. En el mdulo anterior ya
empleamos el Entorno Integrado de Desarrollo Visual C# 2005 Express, por lo que
resultar familiar el desarrollo de estas aplicaciones.
Visual Studio permite disear la interfaz grfica de una aplicacin de manera visual, sin
ms que arrastrar con el ratn los controles que necesitamos sobre la ventana destino de los
mismos, adems, las propiedades de cada control nos permitirn modificar algunos valores
(color, tamao, tipo de letra), todo esto se hace sin escribir ni una sola lnea de cdigo.
Obviamente, en cualquier lenguaje de programacin es necesario escribir el cdigo fuente,
pero gracias al entorno de Visual Studio, es fcil identificar errores, adems, permite
completar cdigo, por ejemplo, el escribir el nombre de un control muestra
automticamente todas las propiedades y mtodos asociados.
Para crear una aplicacin visual, debes seguir los pasos para crear un proyecto que se
mencionaron anteriormente, pero en el paso 2a selecciona Aplicacin para Windows.

Elementos del entorno integrado de desarrollo de Visual C# 2005 Express.


Una vez creada la aplicacin para Windows, se mostrar el formulario, form1, adems el
entorno integrado de desarrollo est compuesto por:
a) Barra de herramientas.
b) Diseador.
c) Explorador de soluciones.

d) Propiedades.
e) Editor de cdigo.

Figura 1. Elementos del Editor de Visual Studio .Net.

Figura 2. Editor de cdigo


.
Diseador: Esta rea est compuesta por todos los formularios que componen el proyecto.
El formulario es el plano de fondo para los controles, por medio del cual se dibujan las
cajas de texto, botones o etiquetas, obteniendo con esto una interfaz grfica que el usuario
utilizar para comunicarse con la aplicacin.

Barra de herramientas: Conjunto de controles que nos permite agregar elementos a un


formulario con slo hacer click sobre un control y arrastrarlo a la barra de herramientas. En
el prximo tema se detallarn las propiedades de los controles ms empleados. Si la barra
de herramientas no est visible, selecciona en el men textual ver/cuadro de herramientas,
cabe hacer mencin que los controles slo pueden ser visibles cuando un formulario est
activo.

Explorador de soluciones: Muestra el nombre de la solucin (conjunto de varios


proyectos), el nombre del proyecto, y el de todos los formularios y mdulos; en este caso se
especifica el nombre de la solucin (solucin WindowsApplication4 (1 proyecto), el

nombre del proyecto (WindowsApplication4), y los elementos del proyecto (Form1.cs); si


observas, existen dos archivos Form1.Designer.cs y el Form1.cs; el primero es el utilizado
por el diseador de formularios y el segundo es empleado para escribir el cdigo.

Figura 3. Explorador de soluciones.

Propiedades: Como ya se mencion en los mdulos pasados, cada clase de objeto tiene
predefinido un conjunto de propiedades, como nombre, color, tamao. Por lo general, todas
las propiedades ya tienen valores establecidos, pero stos pueden ser modificados por el
programador en tiempo de diseo. Existe una propiedad denominada tag, la cual est
reservada para que el programador asigne un valor relacionado con el control. En el
prximo tema se especificarn los controles bsicos y sus propiedades.

Editor de cdigo: Es el rea destinada a escribir el cdigo fuente de las aplicaciones, por
ejemplo, si seleccionamos un botn y hacemos click derecho en ver cdigo, la pgina de
diseo ser sustituida por el editor de cdigo. Visual Studio proporciona varias
caractersticas que son de gran ayuda para el programador: bloques de cdigo contrables
(todo el cdigo de un if puede contraerse en una sola lnea), finalizacin de cdigo (al
escribir el nombre de un control muestra todas las propiedades y mtodos de ste).

Formularios
Es el plano de fondo de los controles, se puede decir que es un contenedor de controles; si
observas, todas las aplicaciones visuales parten de un formulario, comnmente llamado
ventana. Pueden existir varios formularios en el mismo proyecto, pero uno de stos ser el
principal y llamar a todos los dems. Un formulario es tratado como una clase y a partir de
ste se pueden crear varios objetos formulario. Al igual que los controles bsicos, los
formularios tambin contienen propiedades y mtodos, los ms importantes son:

Propiedades principales de los formularios:


Name:
Especifica el nombre del formulario.

StartPosition:
Determina la posicin del formulario cuando aparece la primera vez, los valores pueden
ser: (Normal, CenterScreen, CenterParent, WindowsDefaultLocation,
WindowsDefaultBounds).
Text:
Ttulo del formulario.
WindowState:
Indica el estado visual inicial del formulario, sus valores son: (Normal, Minimized,
Miximized).
Icon:
Indica el icono para un formulario. Este icono se muestra en el cuadro de men del sistema
del formulario y cuando el formulario se minimiza. La imagen por mostrar debe tener la
extensin .ico.
BackColor:
Color de fondo del formulario.
Enlace entre formularios:
Un proyecto est compuesto por varios formularios, por lo tanto, son necesarias algunas
lneas de cdigo para llamar a otros formularios, tal y como se muestra en la Figura 1, en
donde el formulario 1 hace un llamado al 2.

Figura 1. Enlace entre formularios.


Para crear y enlazar formularios se realiza lo siguiente:
1. Agregar un formulario a la aplicacin.
a) Hacer click en el men textual en la opcin proyecto/Agregar nuevo elemento.
b) Seleccionar Windows forms y especificar el nombre del nuevo formulario.

Figura 2. Agregar nuevo elemento.

2. Para llamar a otro formulario es necesario hacer lo siguiente:


a) Hacer doble click sobre el formulario 1 y escribir:
Definir un objeto de tipo Form, y hacer una instancia con el formulario que se llamar:
Form nombre_objeto = new Formulario_a_mostrar ;
Ejemplo:
Form forma2 = new Form2;
Mostrar el formulario, empleando el mtodo show ;
Nombre_objeto.show();
Ejemplo:
forma2.show();

Controles bsicos y sus propiedades


Los controles estn contenidos en el cuadro de herramientas, y permiten crear interfaces
grficas sin necesidad de escribir cdigo; existen dos tipos de controles:
Visuales: Pueden ser vistos y manipulados por el usuario en tiempo de ejecucin.
No visuales: Se insertan en el formulario y tienen una funcin sobre el programa, por

ejemplo, la conexin con una base de datos, pero no pueden ser vistos en tiempo de
ejecucin.
Visual Studio clasifica sus controles en varias categoras, las cuales son:

Controles comunes.
Contenedores.
Mens y barras de herramientas.
Datos.
Componentes.
Impresin.
Cuadros de dilogo.

Resultara muy extenso abordar en este curso todos los controles, por lo que slo
analizaremos los necesarios para crear sistemas de informacin. Cada clase de objeto tiene
predefinido un conjunto de propiedades, tales como nombre, tamao color, etc. Las
propiedades de un objeto representan todos los atributos que por definicin estn asociados
con ese objeto.
Existen propiedades comunes para todos los objetos, tal es el caso de la propiedad name, en
cambio, algunas propiedades son nicas para un control, por ejemplo, el interval, el cual es
nico para el timer.

Para modificar las propiedades de un control, se debe realizar lo siguiente:


1. Seleccionar el control.
2. Hacer click derecho y seleccionar la opcin propiedades.
3. Seleccionar en la lista propiedades, la propiedad que desea modificar.

A continuacin, se analizarn los controles ms comunes y sus propiedades.


Label: Es una etiqueta que permite mostrar un texto que no puede ser modificado por el
usuario, sus propiedades comunes son:
Name: Indica el nombre utilizado en el cdigo para identificar el objeto.
Text: Es empleada para mostrar informacin al usuario en tiempo de ejecucin.
Font: Fuente utilizada para mostrar texto en el control.
Forecolor: Color del texto.
TextBox: Es una caja de texto, sirve para ingresar datos desde el teclado o cualquier otro
dispositivo de entrada, adems, permite mostrar informacin. El TextBox tambin tienen
las propiedades mencionadas para el label, pero existen otras propiedades como son:
Maxlength: Especifica el nmero mximo de caracteres permitidos.
Passwordchar: Indica el carcter que se debe mostrar cuando se escriben contraseas.
Multiline: Especifica si el texto puede ser de una o varias lneas.
Button: Un botn de pulsacin normalmente tendr asociada una orden con l. Esta orden
se ejecutar cuando el usuario haga click sobre el botn. Comparte las mismas propiedades
del label.
ListBox: Contiene una lista de elementos de la que el usuario puede seleccionar uno o

varios elementos. Sus propiedades principales son:


tems: Permite ingresar elementos a un cuadro de lista.
SelecctionMode: Indica si el cuadro de lista debe ser de seleccin simple, mltiple o no
seleccionable.
ComboBox: Es una combinacin de caja de texto y lista desplegable, por lo tanto, hereda
las propiedades del cuadro de lista y de la caja de texto.
PictureBox: Permite insertar imgenes al formulario, las propiedades principales son:
Image: Especifica la imagen mostrada.
SizeMode: Controla el tamao de la imagen, por ejemplo, si la imagen es ms grande que el
PictureBox, puedo cambiar el valor de esta propiedad a strechimage para ajustar la imagen
al tamao del PictureBox.
En la Figura 1 se muestran todos los controles mencionados en este tema.

Figura 1. Controles bsicos.

MenuStrip
Es una forma de proveer al usuario de un conjunto de rdenes, lgicamente relacionadas,
agrupadas bajo un mismo ttulo. El conjunto de todos los ttulos correspondientes a los
mens diseados aparecern en la barra de mens situada debajo del ttulo del formulario.

Figura 2. Men.

Para crear un men realiza los siguientes pasos:

Arrastrar de la barra de herramientas un control MenuStrip sobre el formulario.


Esta accin abrir el editor de mens que permitir aadir los mens a la barra de
herramientas.
Introducir el ttulo del men. Escribe en la caja de texto Escriba aqu el ttulo del
men que se desea crear, el cual aparecer en la barra de mens.
Insertar submen. Hacer click en el men al que se desea agregar un submen, y
escribe en la caja de texto Escriba aqu, el ttulo del submen que deseas crear.

Casillas de verificacin: Es un control que indica si una opcin particular est activada o
desactivada. Cada casilla de verificacin es independiente de las dems, ya que cada una de
ellas tiene su propio identificador. El nmero de opciones representadas de esta forma
puede ser cualquiera, y de ellas el usuario puede seleccionar todas las que desee cada vez.
Puedes usar las casillas de verificacin para indicar tus preferencias en deportes, por
ejemplo, si observas la Figura 3, en deportes preferidos puedes seleccionar natacin o tenis,
y si lo deseas puedes seleccionar las 3 opciones.

Figura 3: Casillas de verificacin.

Para crear una casilla de verificacin sigue los siguientes pasos:


1. Arrastra desde la barra de herramientas un checkBox.
2. Escribe en la propiedad text, el texto deseado.
3. La propiedad check de tipo booleano indica si la casilla de verificacin se ha
seleccionado.

Validaciones en controles de edicin


Validaciones en controles de edicin
Los sistemas de informacin requieren el ingreso de datos ya sea mediante teclado o desde
algn dispositivo de entrada como lector de cdigo de barras. Muchas veces el usuario
introduce datos que no son vlidos, por ejemplo, en el campo edad introduce letras o en el
nombre de una persona introduce letras y nmeros, etc., estos errores no deben ser
permitidos por el sistema de informacin; por lo tanto, el programador debe aplicar ciertos
mecanismos para asegurar la integridad y consistencia de la base de datos, las restricciones
pueden ser:

A nivel de la base de datos: Se refiere a ciertas reglas de integridad de dominios que se


definen al crear las tablas, pero estos temas sern abordados en cursos posteriores de
base de datos.
A nivel de Lenguaje de programacin: Se definen ciertas restricciones sobre los caracteres
que se introducen a los controles de edicin (cajas de texto, combobox). Algunas
validaciones que pueden realizarse son:
o Al estar escribiendo sobre un control de edicin (cajas de texto, combobox) y
presionar la tecla intro, el cursor se posiciona en el siguiente control.
o Controles que slo acepten caracteres numricos.
o

Al estar escribiendo sobre un control de edicin (cajas de texto, combobox) y


presionar la tecla intro, el cursor se posiciona en el siguiente control:

Para realizar esta operacin vamos a programar un evento (accin realizada por el usuario)
de la caja de texto. Cada vez que el usuario presiona una tecla de tipo carcter se activa el
evento KeyPress, que recibe como parmetro el valor ASCII de la tecla pulsada (el valor de
la tecla intro es 13), por lo tanto, para programar este evento es necesario realizar lo
siguiente
1. Crear un formulario con dos cajas de texto.
2. Seleccionar la primera caja de texto y hacer click derecho eligiendo propiedades.
3. En la ventana propiedades seleccionar el botn eventos.
4. Seleccionar el evento KeyPress, y hacer doble click sobre ste.

Figura 1. Eventos de la caja de texto.

5. Escribir el cdigo necesario en la funcin.

Figura 2. Cdigo del programa.

Si observas en la Figura 2, la funcin KeyPress recibe dos parmetros (sender, e), el


parmetro e contiene varias propiedades, una de stas es keyChar que contiene el valor
ASCII de la tecla pulsada, por lo tanto, debemos hacer una condicin que valide cuando el
usuario presiona la tecla intro (13)y posicione el cursor (foco) en la siguiente caja de texto.

As mismo, debemos escribir el siguiente cdigo:


if (e.KeyChar == 13)
//posiciona el foco de entrada en la segunda caja de texto
textBox2.Focus();

Controles que slo acepten caracteres numricos


Existen valores de tipo numrico y que no pueden aceptar valores alfabticos, por ejemplo:
la edad, semestre, nmero de edicin de un libro, capacidad de disco duro, precio y
existencia de un producto. Para restringir los valores de una caja de texto o cualquier
control de edicin se debe hacer lo siguiente:
1. Programar el evento keyPress de la caja de texto (sigue los pasos 2 a 5 del programa
anterior).
2. Buscar los valores ASCII del rango de nmeros:
0= 48
1=49
2=50
.
.
.
9=57
3. El parmetro e tiene una propiedad denominada handled de tipo boolean
(falso/verdadero). Sus acciones son:
e.handled = true; //cancela la tecla presionada
e.handled= false; //permite escribir sobre el control de edicin la tecla presionada.
4. Se necesita una condicin para preguntar si la tecla presionada no est dentro del rango
establecido (48 a 57), para asignar el valor de e.handled = true;
if(!(e.KeyChar >=48 && e.KeyChar <=57))
El signo ! niega la expresin y se traduce como: Si la tecla presionada no es mayor o
igual a 48 y no es menor o igual a 57.
5. Por lo tanto, el cdigo resultante es:
if (!(e.KeyChar >= 48 && e.KeyChar <= 57) )
e.Handled = true;

6. Al ejecutar el programa notars que, si por error introdujiste un nmero incorrecto, la


tecla retroceso no funciona, obviamente esto sucede porque slo especificamos nmeros de
0 a 9. Para solucionar este problema debemos hacer lo siguiente:
a) El valor de la tecla retroceso = 8.
b) Por lo tanto, el cdigo anterior se modifica:
if (!((e.KeyChar >= 48 && e.KeyChar <= 57) || (e.KeyChar == 8)))
e.Handled = true;
Lo que se traduce como: "Si la tecla presionada no es mayor o igual a 48 y no es menor o
igual a 57 o no es igual a 8.

Campos obligatorios
En cualquier aplicacin deben existir campos obligatorios, es decir, que si no se introduce
algn dato no es posible almacenarlo; por ejemplo, cuando creaste tu cuenta de correo, en
el campo nombre y contrasea debera tener un valor porque, de lo contrario, al enviar los
datos mostraba un mensaje que no era posible guardar los datos. De la misma forma sucede
con los sistemas de informacin, se requiere ciertos datos que son obligatorios (nmero de
control, nombre), estas validaciones son realizadas al guardar o modificar los datos, por lo
tanto, se deben programar en el evento click del botn guardar.

1. Hacer doble click en el botn guardar.


2. Verificar si el campo obligatorio es nulo
if(txtNumControl == ).
3. En caso de que el campo sea nulo, enviar un mensaje
MessageBox.Show(Escriba nmero de control).
4. Posicionar el foco en la caja de texto correspondiente
txtNumControl.Focus().
5. Cuando no existe un dato, no es necesario seguir validando los dems controles, por lo
que se recomienda concluir la funcin por medio de la expresin return.
6. El cdigo quedara de la siguiente manera:
if (txtNombre.Text == "")
{
MessageBox.Show("Falta nombre");
return;
}
if (txtNumControl.Text == "")
{
MessageBox.Show("Falta nmero de control ");
return;
}

Operaciones aritmticas
Operaciones aritmticas
Por lo regular, en todo procesamiento de informacin se requiere realizar operaciones
matemticas, ya sean simples funciones aritmticas o funciones trigonomtricas y clculos
especiales.
Las operaciones matemticas ya las has realizado en otros cursos de programacin, pero
aqu la problemtica surge cuando dichas operaciones son realizadas con datos introducidos
por el usuario en controles, tales como cajas de texto, combobox o cualquier control de
edicin, debido a que estos controles son de tipo string y las operaciones matemticas
requieren tipos numricos. Si se realizara una operacin de multiplicacin (*), el cdigo
sera:
TxtResul.Text = TxtNum1.Text * TxtNum2.Text;
En la Figura 1 se muestra la operacin que causar un error porque se est haciendo una
multiplicacin con tipos de datos string.

Figura 1. Multiplicacin de dos nmeros.

Figura 2. Mensaje de error.

El mensaje de error de la Figura 2, sucede porque no se pueden realizar operaciones de


multiplicacin con tipos de datos string. El nico operador matemtico que puede ser
utilizado es +, pero no realiza la funcin de suma, sino concatenacin de cadenas:
TxtResul.Text = TxtNum1.Text + TxtNum2.Text;
En la Figura 3 se muestra el resultado del operador + sobre dos tipos de datos string.

Figura 3. Concatenacin de cadenas.

Clase Convert:
Los problemas anteriores pueden solucionarse por medio de la clase convert, la cual
convierte un tipo de datos base en otro tipo de datos base, es decir, puede convertir de
string a entero, entero a string, por citar algunos ejemplos. Los tipos base que admite son:

Boolean
Char
SByte
Byte
Int16
Int32
Int64

UInt16
UInt32
UInt64
Single
Double
Decimal
DataTime
String

Su sintaxis es:
Convert. Metodo(parmetro);
Para el ejemplo de la Figura 1 se puede hacer lo siguiente:
o

Declarar 3 variables de tipo int.

int num1, num2, result;


o
o
o
o

Convertir el valor de TxtNum1.Text a entero y asignarlo a la variable num1.


num1=Convert.ToInt16(TxtNum1.Text);
Convertir el valor de TxtNum2.Text a entero y asignarlo a la variable num2.
Num2=Convert.ToInt16(TxtNum2.Text);
Realizar la multiplicacin con las variables numricas.
result=num1*num2;
Mostrar el resultado de la multiplicacin (result) en txtResul.Text. result es de tipo
entero y txtResul.Text es string, por lo tanto, es necesario convertir de entero a
cadena.
TxtResul.Text = Convert.ToString(result).

Descargar programa.

Tarea 5. Definicin de los requisitos del proyecto a


realizar en este curso.
Instrucciones:Identifica de forma individual, los requisitos e interfaz grfica del sistema a
desarrollar como proyecto del curso.
Busca en tu entorno laboral o social, una problemtica que pueda ser resuelta con un
Sistema de informacin.
Con la ayuda del personal relacionado directamente con el problema, identifica los
requisitos del sistema (datos que se almacenarn, operaciones a realizar, resultados que se
desean obtener).
Con la asesora de tu profesor titular define los mdulos del sistema de informacin.
o

Debe existir un mdulo de usuarios para el control de acceso al sistema.

Tarea 6. Interfaz grfica del proyecto a realizar.


Instrucciones: Identifica de forma individual, los requisitos e interfaz grfica del sistema a
desarrollar como proyecto del curso.
A partir de los mdulos definidos en la tarea 5, crea una interfaz visual en C# que contenga lo
siguiente para descargar el ejemplo haz clic aqu
o
o
o
o

Un formulario de acceso al sistema que solicite al usuario nombre de usuario y contrasea.


Un Men que contenga todos los mdulos del sistema.
Por cada mdulo del sistema debe existir un submen con las operaciones altas, bajas
modificaciones y consultas.
Por cada submen debe existir un formulario que contenga los controles necesarios para
introducir o mostrar los datos necesarios.

Tarea 7. Validaciones de los datos introducidos por el


usuario.
Instrucciones: Valida los datos que el usuario introducir en el sistema definido en las
actividades 5 y 6.
A partir de la interfaz visual generada en la actividad anterior, identifica el tipo de cada
dato (entero, caracteres alfabticos, alfanumrico).
Realizar las validaciones necesarias en cada formulario.

Tarea 8. Operaciones aritmticas


Isntrucciones: Crea de forma individual, un programa para realizar las
operaciones aritmticas bsicas (suma, resta, multiplicacin, divisin y residuo de
una divisin).
Lee detalladamente el Tema 3.5 Operaciones aritmticas.
Crea un proyecto que contenga un formulario como el que se muestra en la Figura 1.

Figura 1. Operaciones aritmticas.


El usuario introducir dos nmeros y dependiendo del botn que presione mostrar el
resultado de la operacin aritmtica correspondiente.
Realizar las validaciones necesarias en el formulario para que slo acepte nmeros
enteros.
Recuerda que el residuo de la divisin se obtiene con el operador %.

UNIDAD 3
Competencia especfica de la unidad:
Implementar la herencia en clases derivadas para reutilizar los miembros de una
clase base.

Informacin tomada de wikipedia:

Herencia (informtica)
Para otros usos de este trmino, vase Herencia.

En programacin orientada a objetos la herencia es, despus de la agregacin o


composicin, el mecanismo ms utilizado para alcanzar algunos de los objetivos ms
preciados en el desarrollo de software como lo son la reutilizacin y la extensibilidad. A
travs de ella los diseadores pueden crear nuevas clases partiendo de una clase o de una
jerarqua de clases preexistente (ya comprobadas y verificadas) evitando con ello el
rediseo, la modificacin y verificacin de la parte ya implementada. La herencia facilita la

creacin de objetos a partir de otros ya existentes e implica que una subclase obtiene todo el
comportamiento (mtodos) y eventualmente los atributos (variables) de su superclase.
Es la relacin entre una clase general y otra clase ms especfica. Por ejemplo: Si
declaramos una clase prrafo derivada de una clase texto, todos los mtodos y variables
asociadas con la clase texto, son automticamente heredados por la subclase prrafo.
La herencia es uno de los mecanismos de los lenguajes de programacin orientada a objetos
basados en clases, por medio del cual una clase se deriva de otra de manera que extiende su
funcionalidad. La clase de la que se hereda se suele denominar clase base, clase padre,
superclase, clase ancestro (el vocabulario que se utiliza suele depender en gran medida del
lenguaje de programacin).
En los lenguajes que cuentan con un sistema de tipos fuerte y estrictamente restrictivo con
el tipo de datos de las variables, la herencia suele ser un requisito fundamental para poder
emplear el Polimorfismo, al igual que un mecanismo que permita decidir en tiempo de
ejecucin qu mtodo debe invocarse en respuesta a la recepcin de un mensaje, conocido
como enlace tardo (late binding) o enlace dinmico (dynamic binding).
Ejemplo en Java
import javax.*;
import javax.swing.JOptionPane;
public class Mamifero{
private int patas;
private String nombre;
public void imprimirPatas(){
JOptionPane.showMessageDialog(null," Tiene " + patas +
" patas\n", "Mamifero", JOptionPane.INFORMATION_MESSAGE);
}
public Mamifero(String nombre, int patas){
this.nombre = nombre;
this.patas = patas;
}
}
public class Perro extends Mamifero {
public Perro(String nombre){
super(nombre, 4);
}
}
public class Gato extends Mamifero {

public Gato(String nombre){


super(nombre, 4);
}
}
public class CrearPerro {
public static void main(String[] args) {
Perro perrito = new Perro("Pantaleon");
perrito.imprimirPatas();
/*Est en la clase
mamfero*/
}
}
Se declaran las clases mamferos, gato y perro, haciendo que gato y perro sean unos
mamferos (derivados de esta clase), y se ve como a travs de ellos se nombra al animal
pero as tambin se accede a patas dndole el valor por defecto para esa especie.
Es importante destacar tres cosas. La primera, es que la herencia no es un mecanismo
esencial en el paradigma de programacin orientada a objetos; en la mayora de los
lenguajes orientados a objetos basados en prototipos las clases no existen, en consecuencia
tampoco existe la herencia y el polimorfismo se logra por otros medios. La segunda, es que
el medio preferido para lograr los objetivos de extensibilidad y reutilizacin es la
agregacin o composicin. La tercera, es que en lenguajes con un sistema de tipos dbiles,
el polimorfismo se puede lograr sin utilizar la herencia.
Por otra parte y aunque la herencia no es un concepto indispensable en el paradigma de
programacin orientada a objetos, es mucho ms que un mecanismo de los lenguajes
basados en clases, porque implica una forma de razonar sobre cmo disear ciertas partes
de un programa. Es decir, no slo es un mecanismo que permite implementar un diseo,
sino que establece un marco conceptual que permite razonar sobre cmo crear ese diseo.
Clase Abstracta
La herencia permite que existan clases que nunca sern instanciadas directamente. En el
ejemplo anterior, una clase "perro" heredara los atributos y mtodos de la clase
"mamfero", as como tambin "gato", "delfn" o cualquier otra subclase; pero, en
ejecucin, no habr ningn objeto "mamfero" que no pertenezca a alguna de las subclases.
En ese caso, a una clase as se la conocera como Clase Abstracta. La ausencia de
instancias especficas es su nica particularidad, para todo lo dems es como cualquier otra
clase.
Herencia y ocultacin de informacin
En ciertos lenguajes, el diseador puede definir qu variables de instancia y mtodos de los
objetos de una clase son visibles. En C++ y java esto se consigue con las especificaciones

private, protected y public. Slo las variables y mtodos definidos como pblicos en un
objeto sern visibles por todos los objetos. En otros lenguajes como Smalltalk, todas las
variables de instancia son privadas y todos los mtodos son pblicos.
Dependiendo del lenguaje que se utilice, el diseador tambin puede controlar qu
miembros de las superclases son visibles en las subclases. En el caso de java y C++ los
especificadores de acceso (private, protected, public) de los miembros de la superclase
afectan tambin a la herencia:
Private
Ningn miembro privado de la superclase es visible en la subclase.
Protected
Los miembros protegidos de la superclase son visibles en la subclase, pero no
visibles para el exterior.
Public
Los miembros pblicos de la superclase siguen siendo pblicos en la subclase.
Redefinicin de mtodos
En la clase derivada se puede redefinir algn mtodo existente en la clase base, con el
objeto de proveer una implementacin diferente. Para redefinir un mtodo en la subclase,
basta con declararlo nuevamente con la misma signatura (nombre y parmetros). Si se
invoca un cierto mtodo de un objeto que no est definido en su propia clase, se dispara la
bsqueda hacia arriba en la jerarqua a la que dicha clase pertenece. Sin embargo, si
existieran dos mtodos con la misma signatura, uno en la clase y otro en una superclase, se
ejecutara el de la clase, no el de la superclase.
Cuando se redefine un mtodo en una clase es posible acceder explcitamente al mtodo
original de su superclase, mediante una sintaxis especfica que depende del lenguaje de
programacin empleado (en muchos lenguajes se trata de la palabra clave super).
Ventajas

Ayuda a los programadores a ahorrar cdigo y tiempo, ya que la clase padre ha


sido implementada y verificada con anterioridad, restando solo referenciar desde
la clase derivada a la clase base (que suele ser extends, inherits, subclass u otras
palabras clave similares, dependiendo del lenguaje).

Los objetos pueden ser construidos a partir de otros similares. Para ello es
necesario que exista una clase base (que incluso puede formar parte de una
jerarqua de clases ms amplia).

La clase derivada hereda el comportamiento y los atributos de la clase base, y es


comn que se le aada su propio comportamiento o que modifique lo heredado.

Toda clase pueden servir como clase base para crear otras.

Estereotipos de herencia
Herencia simple
Una clase slo puede heredar de una clase base y de ninguna otra.
Herencia mltiple
Una clase puede heredar las caractersticas de varias clases base, es decir, puede
tener varios padres. En este aspecto hay discrepancias entre los diseadores de
lenguajes. Algunos de ellos han preferido no admitir la herencia mltiple debido a
que los potenciales conflictos entre mtodos y variables con igual nombre, y
eventualmente con comportamientos diferentes crea un desajuste cognitivo que
va en contra de los principio de la programacin orientada a objetos. Por ello, la
mayora de los lenguajes orientados a objetos admite herencia simple. En
contraste, algunos pocos lenguajes admiten herencia mltiple, entre ellos: C++,
Python, Eiffel, mientras que Smalltalk, Java, Ada y C# slo permiten herencia
simple.
Otra definicin de Herencia tomada de kioskea.net:

El concepto de herencia
La herencia es especfica de la programacin orientada a objetos, donde una clase nueva se
crea a partir de una clase existente. La herencia (a la que habitualmente se denomina
subclases) proviene del hecho de que la subclase (la nueva clase creada) contiene las
atributos y mtodos de la clase primaria. La principal ventaja de la herencia es la capacidad
para definir atributos y mtodos nuevos para la subclase, que luego se aplican a los
atributos y mtodos heredados.
Esta particularidad permite crear una estructura jerrquica de clases cada vez ms
especializada. La gran ventaja es que uno ya no debe comenzar desde cero cuando desea
especializar una clase existente. Como resultado, se pueden adquirir bibliotecas de clases

que ofrecen una base que puede especializarse a voluntad (la compaa que vende estas
clases tiende a proteger las datos miembro usando la encapsulacin).

Jerarqua de clase
La relacin primaria-secundaria entre clases puede representarse desde un punto de vista
jerrquico, denominado vista de clases en rbol. La vista en rbol comienza con una clase
general llamada superclase (a la que algunas veces se hace referencia como clase primaria,
clase padre, clase principal, o clase madre; existen muchas metforas genealgicas). Las
clases derivadas (clase secundaria o subclase) se vuelven cada vez ms especializadas a
medida que van descendiendo el rbol. Por lo tanto, se suele hacer referencia a la relacin
que une a una clase secundaria con una clase primaria mediante la frase "es una" x o y.

Herencia mltiple
Algunos lenguajes orientados a objetos, como C++ permiten herencias mltiples, lo que
significa que una clase puede heredar los atributos de otras dos superclases. Este mtodo
puede utilizarse para agrupar atributos y mtodos desde varias clases dentro de una sola.

UNIDAD 4 POLIMORFISMO

Competencia especfica de la unidad:


Implementar interfaces y clases polimrficas.

Informacin tomada de kioskea.net

Definicin de polimorfismo
La palabra polimorfismo proviene del griego y significa que posee varias formas diferentes.
Este es uno de los conceptos esenciales de una programacin orientada a objetos. As como
la herencia est relacionada con las clases y su jerarqua, el polimorfismo se relaciona con
los mtodos.
En general, hay tres tipos de polimorfismo:

Polimorfismo de sobrecarga
Polimorfismo paramtrico (tambin llamado polimorfismo de plantillas)
Polimorfismo de inclusin (tambin llamado redefinicin o subtipado)

Trataremos de describir ahora con ms precisin estos tipos de polimorfismo, pero le


sugerimos prestar atencin, ya que muchas personas suelen confundirse al tratar de
comprender las diferencias existentes entre estos tres tipos.

Polimorfismo de sobrecarga
El polimorfismo de sobrecarga ocurre cuando las funciones del mismo nombre existen, con
funcionalidad similar, en clases que son completamente independientes una de otra (stas
no tienen que ser clases secundarias de la clase objeto). Por ejemplo, la clase complex, la
clase image y la clase link pueden todas tener la funcin "display". Esto significa que no
necesitamos preocuparnos sobre el tipo de objeto con el que estamos trabajando si todo lo
que deseamos es verlo en la pantalla.

Por lo tanto, el polimorfismo de sobrecarga nos permite definir operadores cuyos


comportamientos varan de acuerdo a los parmetros que se les aplican. As es posible, por
ejemplo, agregar el operador + y hacer que se comporte de manera distinta cuando est
haciendo referencia a una operacin entre dos nmeros enteros (suma) o bien cuando se
encuentra entre dos cadenas de caracteres (concatenacin).

Polimorfismo paramtrico
El polimorfismo paramtrico es la capacidad para definir varias funciones utilizando el
mismo nombre, pero usando parmetros diferentes (nombre y/o tipo). El polimorfismo
paramtrico selecciona automticamente el mtodo correcto a aplicar en funcin del tipo de
datos pasados en el parmetro.
Por lo tanto, podemos por ejemplo, definir varios mtodos homnimos de addition()
efectuando una suma de valores.

El mtodo int addition(int,int) devolvera la suma de dos nmeros enteros.


float addition(float, float) devolvera la suma de dos flotantes.
char addition(char, char) dara por resultado la suma de dos caracteres definidos por el
autor.
etc.

Una signature es el nombre y tipo (esttico) que se da a los argumentos de una funcin. Por
esto, una firma de mtodo determina qu elemento se va a llamar.

Polimorfismo de subtipado
La habilidad para redefinir un mtodo en clases que se hereda de una clase base se llama
especializacin. Por lo tanto, se puede llamar un mtodo de objeto sin tener que conocer su
tipo intrnseco: esto es polimorfismo de subtipado. Permite no tomar en cuenta detalles de
las clases especializadas de una familia de objetos, enmascarndolos con una interfaz
comn (siendo esta la clase bsica).
Imagine un juego de ajedrez con los objetos rey, reina, alfil, caballo, torre y pen, cada
uno heredando el objeto pieza.
El mtodo movimiento podra, usando polimorfismo de subtipado, hacer el movimiento
correspondiente de acuerdo a la clase objeto que se llama. Esto permite al programa realizar
el movimiento.de_pieza sin tener que verse conectado con cada tipo de pieza en particular.

Otra definicin de Polimorfismo tomada de wikipedia

En programacin orientada a objetos, el polimorfismo se refiere a la propiedad por la que


es posible enviar mensajes sintcticamente iguales a objetos de tipos distintos. El nico
requisito que deben cumplir los objetos que se utilizan de manera polimrfica es saber
responder al mensaje que se les enva.
La apariencia del cdigo puede ser muy diferente dependiendo del lenguaje que se utilice,
ms all de las obvias diferencias sintcticas.
Por ejemplo, en un lenguaje de programacin que cuenta con un sistema de tipos dinmico
(en los que las variables pueden contener datos de cualquier tipo u objetos de cualquier
clase) como Smalltalk no se requiere que los objetos que se utilizan de modo polimrfico
sean parte de una jerarqua de clases.

Descripcin
En lenguajes basados en clases y con un sistema de tipos de datos fuerte
(independientemente de si la verificacin se realiza en tiempo de compilacin o de
ejecucin), es posible que el nico modo de poder utilizar objetos de manera polimrfica
sea que compartan una raz comn, es decir, una jerarqua de clases, ya que esto
proporciona la compatibilidad de tipos de datos necesaria para que sea posible utilizar una
misma variable de referencia (que podr apuntar a objetos de diversas subclases de dicha
jerarqua) para enviar el mismo mensaje (o un grupo de mensajes) al grupo de objetos que
se tratan de manera polimrfica.
No obstante, algunos lenguajes de programacin (Java, C++) permiten que dos objetos de
distintas jerarquas de clases respondan a los mismos mensajes, a travs de las denominadas
interfaces (esta tcnica se conoce como composicin de objetos). Dos objetos que
implementen la misma interfaz podrn ser tratados de forma idntica, como un mismo tipo
de objeto, el tipo definido por la interfaz. As, distintos objetos podrn intercambiarse en
tiempo de ejecucin siempre que sean del mismo tipo, y adems con dependencias
mnimas entre ellos. Por estos motivos se considera un buen principio de diseo en
programacin orientada a objetos el favorecer la composicin de objetos frente a la
herencia de clases.1
En Java las interfaces se declaran mediante la palabra clave Interface. Estas se utilizan
para lograr la necesaria concordancia de tipos que hace posible el polimorfismo, tambin
como un contrato que debe cumplir cualquier clase que implemente una cierta interfaz, y
como una forma de documentacin para los desarrolladores. A veces, en la literatura
especfica sobre Java se habla de "herencia y polimorfismo de interfaces", lo que no
concuerda con los conceptos de la programacin orientada a objetos porque una clase que
implementa una interfaz slo obtiene su tipo de datos y la obligacin de implementar sus
mtodos, no copia comportamiento ni atributos. Esta terminologa puede llevar a confusin,
puesto que en Java a menudo se utiliza la mal llamada "herencia de interfaces" para dotar a
una clase de uno o varios tipos adicionales, lo que unido a la composicin, evite la
necesidad de la herencia mltiple y favorezca una utilizacin ms amplia del polimorfismo.

No obstante, el uso de una jerarqua de clases como paso previo, es muy habitual incluso en
aquellos lenguajes en los que es posible prescindir de tal jerarqua, ya que, desde una
perspectiva conceptual, se puede decir que al pertenecer los "objetos polimrficos" a
subclases de una misma jerarqua, se asegura la equivalencia semntica de los mensajes que
se invocarn de modo polimrfico. Por esto, en programacin orientada a objetos a veces se
denomina al polimorfismo como "polimorfismo de subclase (o de subtipo)".
En resumen, en la programacin orientada a objetos, la esencia del polimorfismo no atae a
la clase o prototipo de la que provienen los objetos. Aun as, en los lenguajes basados en
clases, es habitual (y en algunos tal vez sea el nico modo) que dichos objetos pertenezcan
a subclases pertenecientes a una misma jerarqua. Entonces, el polimorfismo debe verse
como una forma flexible de usar un grupo de objetos (como si fueran slo uno). Podra
decirse que el polimorfismo en esencia refiere al comportamiento de los objetos, no a
su pertenencia a una jerarqua de clases (o a sus tipos de datos).
Lo anterior se hace an ms evidente en lenguajes de programacin orientada a objetos
basados en prototipos, como Self, en los que las clases no existen.
Adems, es importante remarcar que si un cierto grupo de objetos pueden utilizarse de
manera polimrfica es porque, en ltima instancia, todos ellos saben responder a un cierto
mensaje (o a varios), pero dado que esos mismos objetos generalmente contendrn otros
mtodos (que otros objetos en dicho grupo no contienen), difcilmente se pueda decir lisa y
llanamente que los objetos son polimrficos; lo correcto es decir que esos objetos se pueden
utilizar de modo polimrfico para un cierto conjunto de mensajes.
Un ejemplo. Podemos crear dos clases distintas: Pez y Ave que heredan de la
superclaseAnimal. La clase Animal tiene el mtodo abstracto mover que se implementa de
forma distinta en cada una de las subclases (peces y aves se mueven de forma distinta).
Entonces, un tercer objeto puede enviar el mensaje mover a un grupo de objetos Pezy Ave
por medio de una variable de referencia de clase Animal, haciendo as un uso polimrfico
de dichos objetos respecto del mensaje mover.
El concepto de polimorfismo, desde una perspectiva ms general, se puede aplicar tanto a
funciones como a tipos de datos. As nacen los conceptos de funciones polimrficas y tipos
polimrficos. Las primeras son aquellas funciones que pueden evaluarse o ser aplicadas a
diferentes tipos de datos de forma indistinta; los tipos polimrficos, por su parte, son
aquellos tipos de datos que contienen al menos un elemento cuyo tipo no est especificado.

Clasificacin
Se puede clasificar el polimorfismo en dos grandes clases:

Polimorfismo dinmico (o polimorfismo paramtrico) es aqul en el que el cdigo no


incluye ningn tipo de especificacin sobre el tipo de datos sobre el que se trabaja. As,
puede ser utilizado a todo tipo de datos compatible.

Polimorfismo esttico (o polimorfismo ad hoc) es aqul en el que los tipos a los que se
aplica el polimorfismo deben ser explcitos y declarados uno por uno antes de poder ser
utilizados.

El polimorfismo dinmico unido a la herencia es lo que en ocasiones se conoce como


programacin genrica.
Tambin se clasifica en herencia por redefinicin de mtodos abstractos y por mtodo
sobrecargado. El segundo hace referencia al mismo mtodo con diferentes parmetros.
Otra clasificacin agrupa los polimorfismo en dos tipos: Ad-Hoc que incluye a su vez
sobrecarga de operadores y coercin, Universal (inclusin o controlado por la herencia,
paramtrico o genericidad).

Ejemplo de polimorfismo
En el siguiente ejemplo hacemos uso del lenguaje C++ para ilustrar el polimorfismo. Se
observa a la vez el uso de las funciones virtuales puras, como se les conoce en C++, estas
funciones constituyen una interfaz ms consistente cuando se trabaja con una jerarqua de
clases, puesto que hacen posible el enlace durante la ejecucin. Sin embargo como se ver,
para que el polimorfismo funcione no es una condicin obligatoria que todas las funciones
en la clase base sean declaradas como virtuales.

Diagrama de clases UML, que describe grficamente la relacin entre la clase base Figura y sus
posibles clases derivadas, y la entidad que utiliza esta estructura: la Aplicacin, tambin
identificado como objeto Cliente.
#include<iostream>
using namespace std;
class Figura {
private:
float base;
float altura;
public:
void captura();
virtual unsigned float perimetro()=0;
virtual unsigned float area()=0;
};
class Rectangulo: public Figura {
public:
void imprime();
unsigned float perimetro(){return 2*(base+altura);}
unsigned float area(){return base*altura;}
};
class Triangulo: public Figura {
public:
void muestra();
unsigned float perimetro(){return 2*altura+base}
unsigned float area(){return (base*altura)/2;}
};
void Figura::captura()
{
cout << "CALCULO DEL AREA Y PERIMETRO DE UN TRIANGULO ISSCELES Y UN
RECTANGULO:" << endl;
cout << "escribe la altura: ";
cin >> altura;
cout << "escribe la base: ";
cin >> base;
cout << "EL PERIMETRO ES: " << perimetro();
cout << "EL AREA ES: " << area();
getchar();
return 0;
}

Polimorfismo desde una interfaz


Aunque el polimorfismo es el mismo se aplique donde se aplique, el modo en que se aplica
desde una interfaz puede resultar un poco ms oscuro y difcil de entender. Se expone un
sencillo ejemplo (en VB-NET) comentado para entender como funciona aplicado desde una
interfaz, primero se escribe el cdigo y luego se comenta el funcionamiento. Nota: para no
enturbiar el cdigo en exceso, todo lo que no se declara privado se sobreentiende pblico.

' Declaramos una interfaz llamada IOperar y declaramos una funcin


llamada Operar
' que implementarn las clases deseadas:
Interface IOperar
Function Operar(valor1 as integer, valor2 as integer) as long
End Interface
' Declaramos una clase que trabaja ms alejada del usuario y que
contendra funciones comunes
' para las siguiente clase, si no fueran idnticas iran en la
interfaz,
' pero al caso de mostrar el polimorfismo se suponen idnticas:
Class Operacion
Function Calcular(clasellamante as Object) as Long
' aqu ira el cdigo comn a todas las operaciones.... que llaman a
esa funcin
' por ejemplo recoger los 2 valores de la operacin, chequear que estn
en el rango deseado, etc.
' se supone que la funcin inputValor recoge un valor de algn sitio
valor1 as integer = inputValor()
valor2 as integer = inputValor()
op as New IOperar = clasellamante
Return op.Operar(valor1,valor2) 'AQU es donde se utiliza el
polimorfismo.
End Function
End Class
' Declaramos 2 clases: Sumar y Restar que implementan la interfaz y que
llaman a la clase Operacion:
Class Sumar
Implements IOperar
Private Function Operar(valor1 as Integer, valor2 as Integer) as Long
Implements IOperar.Operar
Return valor1 + valor2
End Function
Function Calcular() as Long
op as New operacion
Return op.Calcular(Me) ' se est llamando a la funcin 'Calcular' de la
clase 'Operacin'
End Function
End Class
' segunda clase....
Class Restar
Implements IOperar
Private Function Operar(valor1 as Integer, valor2 as Integer) as Long
Implements IOperar.Operar
Return valor1 - valor2
End Function
Function Calcular() as Long
op as New operacion
Return op.Calcular(Me) ' se est llamando a la funcin 'Calcular' de la
clase 'Operacin'

End Function
End Class

Analicemos ahora el cdigo para entender el polimorfismo expuesto en la interfaz: La


interfaz expone un mtodo que puede ser implementado por las diferentes clases,
normalmente relacionadas entre si. Las clases Sumar y Restar implementan la interfaz pero
el mtodo de la interfaz lo declaramos privado para evitar ser accedido libremente y adems
tienen un mtodo llamado Calcularque llama a la clase Operacion donde tenemos otro
mtodo con el mismo nombre. Es esta clase ltima la que realiza el polimorfismo y debe
fijarse como es a travs de una instancia de la interfaz que llama al mtodo operar. La
interfaz sabe a qu mtodo de qu clase llamar desde el momento que asignamos un valor a
la variable OP en el mtodo Calcular de la clase Operacion, que a su vez recibi la
referencia del mtodo Calcular desde la clase que la llama, sea sta cual sea, se identifica a
s misma, mediante la referencia Me This segn el lenguaje empleado. Debe notarse que
la instancia de la interfaz accede a sus mtodos aunque en sus clases se hayan declarado
privadas.

Diferencias entre polimorfismo y sobrecarga


El polimorfismo como se muestra en el ejemplo anterior, suele ser bastante ventajoso
aplicado desde las interfaces, ya que permite crear nuevos tipos sin necesidad de tocar las
clases ya existentes (imaginemos que deseamos aadir una clase Multiplicar), basta con
recompilar todo el cdigo que incluye los nuevos tipos aadidos. Si se hubiera recurrido a
la sobrecarga durante el diseo exigira retocar la clase anteriormente creada al aadir la
nueva operacin Multiplicar, lo que adems podra suponer revisar todo el cdigo donde
se instancia a la clase.

Un mtodo est sobrecargado si dentro de una clase existen dos o ms declaraciones de


dicho mtodo con el mismo nombre pero con parmetros distintos, por lo que no hay que
confundirlo con polimorfismo.

En definitiva: La sobrecarga se resuelve en tiempo de compilacin utilizando los nombres


de los mtodos y los tipos de sus parmetros; el polimorfismo se resuelve en tiempo de
ejecucin del programa, esto es, mientras se ejecuta, en funcin de la clase a la que
pertenece el objeto.

UNIDAD 5 EXCEPCIONES
Competencia especfica de la unidad:
Identificar, manejar, gestionar y crear las condiciones de error que interrumpan el
flujo normal de ejecucin de un programa.

Informacin tomada de wikipedia:

El manejo de excepciones es una tcnica de programacin que permite al programador


controlar los errores ocasionados durante la ejecucin de un programa informtico.

Introduccin
Una excepcin en trminos de lenguaje de programacin es la indicacin de un problema
que ocurre durante la ejecucin de un programa. Sin embargo, la palabra excepcin se
refiere a que este problema ocurre con poca frecuencia generalmente cuando existe algn
dato o instruccin que no se apega al funcionamiento del programa por lo que se produce
un error. El manejo de excepciones permite al usuario crear aplicaciones tolerantes a fallas
y robustos (resistentes a errores) para controlar estas excepciones y que pueda seguir
ejecutando el programa sin verse afectado por el problema. En lenguaje java estas
excepciones pueden manejarse con las clases que extienden el paquete Throwable de
manera directa o indirecta, pero existen diversos tipos de excepciones y formas para
manejarlas.
Uso del manejo de excepciones

El manejo de excepciones ayuda al programador a trasladar el cdigo para manejo de


errores de la lnea principal de ejecucin, adems se puede elegir entre manejar todas las
excepciones, las de cierto tipo o de las de grupos relacionados, esto hace que la
probabilidad de pasar por alto los errores se reduzca y a la vez hace los programas ms
robustos. Pero es importante utilizar un lenguaje de programacin que soporte este manejo,
de lo contrario el procesamiento de errores no estar incluido y har el programa ms
vulnerable. Este manejo est diseado para procesar errores que ocurren cuando se ejecuta
una instruccin, algunos ejemplos son: desbordamiento aritmtico, divisin entre cero,
parmetros invlidos de mtodo y asignacin fallida en la memoria. Sin embargo, no est
diseado para procesar problemas con eventos independientes al programa como son pulsar
una tecla o clic al mouse.
Las excepciones se dividen en verificadas y no verificadas. Es importante esta divisin
porque el compilador implementa requerimientos de atrapar o declarar para las verificadas
lo que har que se detecten las excepciones automticamente y de acuerdo al lenguaje de
programacin utilizado se utilizar un mtodo para corregirlas. Sin embargo para las no
verificadas se producir un error indicando que deben atraparse y declararse. Por eso el
programador debe pensar en los problemas que pueden ocurrir cuando se llama a un
mtodo y definir excepciones para verificarse cuando sean importantes. Las clases de
excepciones pueden derivarse de una superclase comn, por lo que con un manejador para
atrapar objetos de la superclase, tambin se pueden atrapar todos los objetos de las

subclases de esa clase. Pero tambin, se pueden atrapar a cada uno de los tipos de las
subclases de manera individual si estas requieren ser procesadas diferente.
A cada clula se le conoce como compiladora de distintos.
Limpieza de pila

En ocasiones cuando se lanza una excepcin, pero no se atrapa en un enlace especfico, la


pila de llamadas se limpia y el programa intenta volverlo a atrapar en el siguiente bloque,
esto se conoce como limpia de pila. Este proceso hace que el mtodo en el que no se atrap
la excepcin termina, todas sus variables quedan fuera del enlace y el control regresa a la
instruccin que originalmente la invoc. La limpieza de pila de repetir hasta que la
excepcin pueda ser atrapada porque de lo contrario se producir un error a la hora de
compilar.
Aserciones

Las aserciones ayudan a asegurar la validez del programa al atrapar los errores potenciales
e identificar los posibles errores lgicos del desarrollo. Estas pueden escribirse como
comentarios para apoyar a la persona que desarrolla el programa. Algunos ejemplos son:
Precondiciones y pos condiciones
Estas caractersticas son utilizadas por los programadores para hacer un anlisis de lo
esperado del programa antes y despus de su ejecucin. Son importantes porque gracias a
ellas se pueden detectar posibles fallas en el programa y corregirlas.
Las precondiciones son verdaderas cuando se invoca a un mtodo, estas describen las
caractersticas del mtodo y las expectativas que se tienen en el estado actual del programa.
Si no se cumplen las precondiciones el comportamiento del mtodo es indefinido por lo que
se lanza una excepcin que est preparada o continuar con el programa esperando el error.
Las pos condiciones describen las restricciones en el entorno y cualquier efecto secundario
del mtodo. Es recomendable escribirlas para saber que esperar en un futuro si es que se
hacen modificaciones.
Conclusin

El manejo de excepciones ayuda a lidiar con los errores de una aplicacin por medio de la
manipulacin del cdigo para hacer programas ms robustos. Adems existen herramientas
que ayudan a manejarlas tal es el caso de los bloques try (intentar) que encierran el cdigo
que puede lanzar una excepcin y los bloques catch (atrapar) que lidian con las
excepciones que surjan. Tambin existen tcnicas que el programador utiliza para conocer
el posible funcionamiento del programa y detectar los errores que pueda contener.

Ejemplos de cdigo
Ejemplo de manejo de excepcin en Java:
import java.io.IOException;
// ...
public static void main(String[] args) {
try {
// Se ejecuta algo que puede producir una excepcin
} catch (IOException e) {
// manejo de una excepcin de entrada/salida
} catch (Exception e) {
// manejo de una excepcin cualquiera
} finally {
// cdigo a ejecutar haya o no excepcin
}
}

Ejemplo de manejo de excepcin en Delphi:


procedure TForm1.Button1Click(Sender : TObject);
begin
try
try
a := b / c;
finally
// Este cdigo siempre se ejecuta, independientemente de si ocurre
o no una excepcin.
end;
except
on e:EZeroDivide do
// Manejo de la excepcin Divisin por cero.
on e:Exception do
// Manejo de una excepcin "genrica".
end;
end;

Ejemplo de manejo de excepcin en python:


try:
result = x / y
except ZeroDivisionError:
print "division by zero!"
else:
print "result is", result
finally:
print "executing finally clause"

Ejemplo de manejo de excepcion en Ada

type T_Matriz is array (Positive range <>,


Positive range <>) of Integer;
procedure Rellenar_Matriz
(Matriz : in T_Matriz;
K
: in Integer;
Q
: in Integer);
is
begin
begin
Matriz (K,Q) := 3;
exception
when Constraint_Error =>
Put_Line ("Las posiciones se salen del rango de la matriz");
end;
end Rellenar_Matriz;

Aporte de la liga: http://p-o-o-itsav.blogspot.mx/2012/02/51-definicion-deexcepciones.html


5.1 Definicin de excepciones
Para descargar el documento de este tema, haz clic aqu
Una excepcin es un evento que ocurre durante la ejecucin de un programa y detiene el flujo
normal de la secuencia de instrucciones de ese programa; en otras palabras, una excepcin es una
condicin anormal que surge en una secuencia de cdigo durante su ejecucin.
Las excepciones en Java estn destinadas, al igual que en el resto de los lenguajes que las
soportan, para la deteccin y correccin de errores. Si hay un error, la aplicacin no debera
morirse y generar un core (o un crash en caso del DOS). Se debera lanzar (throw) una excepcin
que a su vez debera capturar (catch) y resolver la situacin de error, o poder ser tratada
finalmente (finally) por un gestor por defecto u omisin. Java sigue el mismo modelo de
excepciones que se utiliza en C++. Utilizadas en forma adecuada, las excepciones aumentan en
gran medida la robustez de las aplicaciones.
La gestin de excepciones en Java proporciona un mecanismo excepcionalmente poderoso para
controlar programas que tengan muchas caractersticas dinmicas durante su ejecucin. Las
excepciones son formas muy limpias de manejar errores y problemas inesperados en la lgica del
programa, y no deberan considerarse como un mecanismo general de ramificaciones o un tipo de
sentencias de salto. Los lugares ms indicados para utilizar excepciones son aquellos en los que se
usan valores como 0 o 1, en C/C++, para indicar algn fallo funcional. Por ejemplo:

#include <sys/errno.h>
int fd;
fd = open( "leeme.txt" );
if( fd == -1 && errno == EEXIT )
fd = open( "defecto.txt" );

}
En este programa C, si falla la primera sentencia open() por cualquiera de las 19 razones distintas
de EEXIT por las que puede fallar, entonces el programa se continuara ejecutando y morira por
alguna razn misteriosa ms adelante, dejando atrs un problema de depuracin complicado y
frustrante.
La versin Java del cdigo anterior, tal como se muestra a continuacin:

FilterReader fr;
try {
Fr = new FilterReader( "leeme.txt" );
} catch( FileNotFoundException e ) {
fr = new FilterReader( "defecto.txt" );
}
Proporciona una oportunidad para capturar una excepcin ms genrica y tratar la situacin
con elegancia o, en el peor de los casos, imprimira el estado de la pila de memoria.
Por ello, que la utilizacin adecuada de las excepciones proporcionar un refinamiento profesional
al cdigo que cualquier usuario futuro de las aplicaciones que salgan de la mano del programador
que las utilice agradecer con toda seguridad.

UNIDAD 6 FLUJOS Y ARCHIVOS


Competencia especfica de la unidad:
Implementar aplicaciones orientadas a objetos que creen y manipulen archivos
para guardar y recuperar informacin.

Definicin de flujos
Para descargar el documento de este tema, haz clic aqu
Un Flujo de E/S representa una fuente de entrada y un destino de salida. Un flujo puede
representar muchos tipos diferentes de fuentes y destinos, incluyendo archivos de disco,
dispositivos, otros programas y arreglos de memoria.
Los flujos soportan muchos tipos diferentes de datos, incluyendo bytes simples, tipos primitivos de
datos, caracteres localizados, y objetos. Algunos flujos simplementa pasan datos, otros manipulan
y transforman datos en formas tiles.

No importa cmo trabajan internamente; todos los flujos presentan el mismo modelo simple a los
programas que los usan: un flujo es una secuencia de datos. Un programa usa un flujo de entrada
para leer datos desde una fuente, o artculo a la vez:

Leyendo informacin hacia un programa.


Un programa usa un flujo de salida para escribir datos a su destino, o artculo a la vez:

Escribiendo informacin desde un programa.

La fuente y el destino de datos retratado arriba puede ser cualquier cosa que mantenga, genere o
consuma datos. Obviamente esto incluye archivos en disco, pero una fuente o destino puede
tambin ser otro programa, un dispositivo perifrico, un socket de red, o un arreglo.

Clasificacin de archivos de texto y binarios

Los archivos de texto plano son aquellos que estn compuestos nicamente por texto sin formato,
solo caracteres. estos caracteres se pueden codificar de distintos modos dependiendo de la lengua
usada. Se les conoce tambin como archivos de texto llano o texto simple por carecer de
informacin destinada a generar formatos y tipos de letra.

Un archivo binario es una archivo informtico que contiene informacin de cualquier tipo,
codificada en forma binaria para el propsito de almacenamiento y procesamiento de
ordenadores.

Muchos formatos binarios contienen partes que pueden ser interpretados como texto. Un archivo
binario que solo contiene informacin de tipo textual sin informacin sobre el formato del mismo,
se dice que es un archivo de texto plano. Habitualmente se contraponen los trminos archivo
binario y archivo de texto de forma que los primeros no contienen solamente texto.

BIBLIOGRAFIA

1. Taylor David. Object Orient informations systems, planning and


implementations. Canada: Wiley. 1992.
2. Larman Craig. UML y patrones introduccin al anlisis y diseo orientado a

objetos. Mxico: Pretince Hall. 1999.


3. Winblad, Ann L. Edwards, Samuel R. Software orientado a objetos. USA:
Addison. Wesley/ Daz Santos. 1993.
4. Fco. Javier Ceballos. Java 2 Curso de Programacin. Alfaomega.
5. Agustn Froufe. Java 2 Manual de usuario y tutorial. Alfaomega.
6. Laura Lemay, Rogers Cadenhead. Aprendiendo JAVA 2 en 21 das. Prentice
Hall.
7. Herbert Schildt. Fundamentos de Programacin en Java 2. McGrawHil.
8. J Deitel y Deitel. Como programar en Java. Prentice Hall.
9. Stephen R. Davis. Aprenda Java Ya. McGrawHill.
10. Kris Jamsa Ph D. Java Ahora!. McGrawHill.
11. Francisco Charte Ojeda. Visual C# .NET. ANAYA MULTIMEDIA
12. Kingsley-Hughes, Kathie; Kingsley-Hughes, Adrian. C# 2005. ANAYAMULTIMEDIA
13. Ceballos Francisco Javier.Enciclopedia de Microsoft Visual C#. 2 Edicin
14. El lenguaje de programacin C#.Fco. Javier Ceballos Sierra. Editorial Ra-ma.
15. Tom Archer. A fondo C#. McGRAW-HILL/INTERAMERICANA DE ESPAA,
S.A.U.

También podría gustarte