Вы находитесь на странице: 1из 113

1

Fundamentos de Programacin
Ingeniera en Tecnologas de la Informacin y Comunicaciones

Objetivo del curso:

Analizar y solucionar problemas informticos y representar su solucin mediante
herramientas de software orientado a objetos.

Competencias previas

- Habilidad para el manejo de la computadora.
- Navegacin en Internet.
- Capacidad de anlisis y sntesis.
- Manejar herramientas de software mediante mens.
- Manejar comandos y funciones bsicas en algn sistema operativo de
computadora.
- Aplicar lgica matemtica en la solucin de problemas informticos.

Aportacin del curso al perfil profesional:

La asignatura de Fundamentos de Programacin aporta al perfil del Ingeniero en
Tecnologas de la Informacin y Comunicaciones, los conocimientos, habilidades,
metodologa, as como capacidades de anlisis y sntesis, para plantear la solucin de
problemas susceptibles de ser computarizados, a travs de diagramas de flujo,
pseudocdigo, algoritmos y el paradigma de programacin orientada a objetos.

Temario:

I. Fundamentos de programacin orientada a objetos.
I.1. Evolucin de la programacin
I.2. Conceptos fundamentales de la Programacin Orientada a Objetos
I.3. Lenguajes orientados a objetos
I.4. Relaciones entre clases y objetos
I.5. Papel de clases y objetos en el anlisis y el diseo

II. Metodologa de Solucin de Problemas.
II.1. Descripcin del problema (enunciado)
II.2. Definicin de solucin (especificaciones)
II.3. Diseo de la solucin (modelado)
II.4. Desarrollo de la solucin (codificacin)
II.5. Depuracin y pruebas (pruebas)
II.6. Documentacin (manuales)

III. Herramientas de programacin.
III.1. Simbologa
III.2. Reglas para la construccin de diagramas
III.3. Pseudocdigo
III.4. Tipos de datos y expresiones
III.5. Estructuras lgicas

2

IV. Programacin orientada a objetos y modelado.
IV.1. Caractersticas del modelo orientado a objetos
IV.2. Elementos primordiales en el modelo de objetos
IV.3. Representacin grfica del diseo
IV.4. Relacin entre la programacin orientada a objetos y la estructurada

V. Implementacin Orientada a Objetos.
V.1. Estructura de una clase
V.2. Elementos de una clase
V.3. Clase principal
V.4. Crear objetos

VI. Modularidad.
VI.1. Declaracin de mtodos
VI.2. Mtodos de clase
VI.3. Mtodos de instancia

Bibliografa

1. Hjalmar Jacobson, Ivar. El Lenguaje Unificado de Modelado Gua del Usuario. 2a.
edicin. Ed. Addison Wesley.
2. Flores Cueto, Juan Jos. Mtodo de las 6D UML Pseudocdigo Java Enfoque
Algortmico, Serie Textos Universitarios Facultad de Ingeniera y Arquitectura. ed.
Universidad de San Martn de Porres, (http://books.google.com/).
3. Joyanes Aguilar, Luis; Fernndez Azuela, Matilde y Rodrguez Baena, Luis.
Fundamentos de Programacin Libro de Problemas Algoritmos Estructura de Datos y
Objetos. 2a. edicin. Ed. McGraw Hill.
4. Ramrez, Felipe. Introduccin a la Programacin, Algoritmos y su Implementacin en
Vb.Net, C#, Java y JAVA. 2a. edicin. Ed. Alfaomega Grupo Editor.
5. Cairo Battistutti, Osvaldo. Metodologa de la Programacin, Algoritmos Diagramas de
Flujo y Programas. 3a. edicin. Ed. Alfaomega Grupo Editor.
6. Martin Robert, C. UML for Java(TM) Programmers. Ed. Robert C. Martin Series,
Pearson. 2003.
7. Grady Booch, James. Rumbaugh E., Greg Perry. Aprendiendo Principios de
Programacin en 24 horas. Ed. Prentice Hall.
8. Sintes, Anthony. Aprendiendo Programacin Orientada a Objetos en 21 Lecciones
Avanzadas. Ed. Pearson Educacin, 2002.

Fechas de Exmenes

Examen Fecha Unidades
1er I y II
2. III y IV
3er V y VI
2 Oportunidad
Calificacin Final
3

Criterios de evaluacin y acreditacin

- Exmenes 60%
- Productos de Aprendizaje 40% (Tareas, Trabajos, Investigaciones, etc.)

Otras Observaciones:

- Personificador
- Hora de entrada
- Asistencia a clase
- 2 Oportunidad
- Revisin equitativa

4

I. Fundamentos de programacin orientada a objetos.

El paradigma orientado a objetos naci en 1969 de la mano del
doctor noruego Kristin Nygaard que intentando escribir un
programa que describiera el movimiento de los barcos a travs de
un fiordo, descubri que era muy difcil simular las mareas, los
movimiento de los barcos, y las formas de las lneas costeras con
los mtodos de programacin existentes en ese momento.
Adems descubri que los elementos del entorno que trataba de
modelar (Barcos, Mareas y Lneas de la costa de los fiordos) as
como las acciones de cada elemento eran ms fcil de manejar
utilizando otro modelo, es aqu donde surge la Programacin
Orientada a Objetos (OOP de sus siglas en ingles).


I.1. Evolucin de la programacin


La evolucin de la programacin se puede sintetizar en tres modelos o paradigmas Un
paradigma es una forma establecida de pensar acerca de cmo hacer algo. En el libro La
Revolucin Cientfica Estructural de Thomas Kuhn describe los paradigmas como un
conjunto de teoras, estndares y mtodos que juntos representa un medio de
organizacin de conocimiento, es decir un medio de visualizar el mundo.


Los tres modelos o paradigmas de la evolucin de la programacin son:


- La programacin mediante procedimientos (procedural o modular)
- La programacin estructurada
- La programacin orientada a objetos


Programacin Procedural o Modular


Los programas se dividen mdulos (partes independientes), cada una de las cuales
ejecuta una nica actividad o tarea y se codifican independientemente uno de otro. Cada
uno de estos mdulos se analiza, codifica y pone a punto por separado.


5



Cada programa contiene un modulo denominado programa principal (por ejemplo en el
lenguaje c se llama main al igual que en Java) que controla todo que sucede,
transfiriendo el control a los submdulos (subprogramas o procedimientos) y estos al
terminar transfieren el control a modulo principal. Si la tarea asignada a cada submdulo
es demasiado compleja, este podr dividirse en otros submdulos ms pequeos. Estas
tares pueden ser procesos de entrada, salida, manipulacin de datos, control de otros
mdulos o alguna combinacin de estas.

Programacin Estructurada

Se refiere a un conjunto de tcnicas que han ido evolucionando
desde los primeros trabajos de Edgar Dijkstra. Esta tcnica
aumenta la productividad del programa reduciendo el tiempo para
escribir, verificar, depurar y mantener los programas. La
programacin estructurada utiliza un nmero limitado de
estructuras de control que minimiza la complejidad de los
problemas y, por consiguiente reduce los errores.

El conjunto de tcnicas que incorpora la programacin estructurada son:

- Diseo descendente (TopDown)
- Recursos Abstractos
- Estructuras bsicas

Diseo descendente (TopDown)

Es el proceso mediante el cual un problema se descompone en una serie de niveles o
pasos sucesivos de refinamiento. Para establecer un refinamiento pasamos de qu hace
a cmo lo hace.

Raz
Modulo
1
Modulo
1.1
Modulo
1.2
Modulo
2
Modulo
2.1
Modulo
2.2
Modulo
2.2.1
Modulo
2.2.2
Modulo
3
Modulo
3.1
Modulo
4
Modulo
4.1
Modulo
4.2
6


Qu hace?



Cmo lo hace?


Diseo descendente
Recursos Abstractos

La abstraccin es el proceso de extraer las propiedades relevantes de un objeto al tiempo
que se ignora los detalles no esenciales. Las propiedades extradas definen una vista del
objeto. En esencia la abstraccin supone la capacidad de encapsular y aislar la
informacin del diseo.

Segn Dijkstra, la abstraccin descompone un programa en trminos de recursos
abstractos, es decir, descompone una accin compleja en una serie de acciones ms
simples, capaces de ser implementadas en una computadora.

Estructuras bsicas

En mayo de 1966 Bhm y Jacopini demostraron que un programa puede ser escrito
utilizando solamente tres tipos de estructura de control:

- Secuenciales
- Selectivas
- Repetitivas
7

Secuenciales


La estructura secuencial es aquella en la que una accin (instruccin) sigue a otra en
secuencia.


Diagrama de Flujo
Diagrama NassiSchneiderman
(NS)
Pseudocdigo




Inicio
Accin 1
Accin 2

Accin n
Fin



Selectivas

Diagrama de Flujo








Accin 1
Accin 2
...
Accin n
Inicio
Fin
Inicio
Accin 1
Accin 2
...
Accin n
Fin
Condicin
Accin 1
Verdadero Falso
8

Diagrama NassiSchneiderman (NS)





Pseudocdigo

Si Condicin
Accin 1
Fin Si

Diagrama de Flujo




Diagrama NassiSchneiderman (NS)



Accin 1
Condicin
Falso Verdadero
Condicin
Accin 1
Verdadero Falso
Accin 2
Accin 1
Condicin
Falso Verdadero
Accin 2
9

Pseudocdigo

Si Condicin
Accin 1
En otro caso
Accin 2
Fin Si


Repetitivas

Diagrama de Flujo
For/Next


While/Mientras


Repeat/Repite



Diagrama NassiSchneiderman (NS)
For/Next



While/Mientras



Condicin
Inc/Dec
Inicio
Proceso
Condicin
Proceso Verdadero
Falso
Condicin
Proceso
Verdadero
Falso
Inc/Dec
Inicio
Proceso
While Condicin
Proceso
10

Repeat/Repite


Pseudocdigo
For/Next

Para I = VI Hasta VF
Proceso
Fin Para

While/Mientras

Mientras Condicin
Proceso
Fin Mientras

Repeat/Repite
Repite
Proceso
Hasta Condicin



I.2. Conceptos fundamentales de la Programacin Orientada a Objetos

La programacin orientada a objetos, tal vez el paradigma de programacin ms utilizado
en el mundo del desarrollo de software y de la ingeniera de software del siglo XXI, trae un
nuevo enfoque a los retos que se plantean en la programacin estructurada cuando los
problemas a resolver son complejos. Al contrario que la programacin procedimental que
enfatiza en los algoritmos, la programacin orientada a objetos (POO) enfatiza en los
datos. En lugar de intentar ajustar un problema al enfoque procedimental de un lenguaje,
POO intenta ajustar el lenguaje al problema. La idea es disear formatos de datos que se
correspondan con las caractersticas esenciales de un problema.

La idea fundamental de los lenguajes orientados a objetos es combinar en una nica
unidad o mdulo, tanto los datos como las funciones que operan a esos datos. Tal unidad
se llama Objeto. A las operaciones que realiza un objeto se les llama Mtodos y es el
Repeat Condicin
Proceso
11

nico medio para acceder a sus datos. Los datos de un objeto, se conocen tambin como
Atributos. Si se desea leer datos de un objeto, se invoca a uno de sus Mtodo. No se
puede acceder a los datos directamente, se debe de realizar por medio de los
mecanismos de Comportamiento (Mtodos). Los datos son ocultos, de modo que
estn protegidos de alteraciones accidentales. Los datos y los Mtodos se dice que estn
Encapsulados en una nica entidad. El Encapsulamiento de datos y la Ocultacin
de los datos son trminos clave en la descripcin de lenguajes orientados a objetos.

Si se desea modificar los datos de un objeto, se debe de conocer exactamente cules son
funciones que interactan con los Mtodos para poder realizar esta accin. Un programa
en Java se compone normalmente de un nmero de objetos que se comunican unos con
otros mediante Mensajes funciones miembro (Mtodos). La organizacin de un
programa en Java se muestra en la siguiente figura. La llamada a una funcin miembro de
un objeto se denomina enviar un mensaje a otro objeto.



En el paradigma orientado a objetos, el programa se organiza como un conjunto finito de
objetos que contiene datos y operaciones (funcin miembro o Mtodos) que llaman a esos
datos y que se comunican entre s mediante Mensajes.

Datos
Funcin Miembro
(Mtodo)
Funcin Miembro
(Mtodo)
Objeto A
Datos
Funcin Miembro
(Mtodo)
Funcin Miembro
(Mtodo)
Objeto B
Datos
Funcin Miembro
(Mtodo)
Funcin Miembro
(Mtodo)
Objeto C
Mensaje
Mensaje
Mensaje
12

Propiedades fundamentales de la orientacin a objetos

Existen diversas caractersticas ligadas a la orientacin a objetos. Todas las propiedades
que se suelen considerar, no son exclusivas de este paradigma, ya que pueden existir en
otros paradigmas, pero en su conjunto definen claramente los lenguajes orientados a
objetos. Estas propiedades son:

- Abstraccin
- Clase
- Objeto
- Encapsulacin
- Ocultamiento
- Herencia
- Polimorfismo
- Mensajes

Abstraccin

La abstraccin es la propiedad de los objetos que consiste en tener en cuenta slo los
aspectos ms importantes desde un punto de vista determinado y no tener en cuenta los
restantes aspectos. El trmino abstraccin que se suele utilizar en programacin se
refiere al hecho de diferenciar entre las propiedades externas de una entidad y los
detalles de la composicin interna de dicha entidad. Es la abstraccin la que permite
ignorar los detalles internos de un dispositivo complejo tal como una computadora, un
automvil, una lavadora o un horno de microondas, etc., y usarlo como una nica unidad
comprensible. Mediante la abstraccin se disean y fabrican estos sistemas complejos en
primer lugar y, posteriormente, los componentes ms pequeos de los cuales estn
compuestos. Cada componente representa un nivel de abstraccin en el cual el uso del
componente se asla de los detalles de la composicin interna del componente. La
abstraccin posee diversos grados denominados niveles de abstraccin.

Nivel de abstraccin Externo:



13

Nivel de abstraccin Conceptual:



Nivel de abstraccin Interno:



En consecuencia, la abstraccin posee diversos grados de complejidad que se
denominan niveles de abstraccin que ayudan a estructurar la complejidad intrnseca que
poseen los sistemas del mundo real. En el modelado orientado a objetos de un sistema
esto significa centrarse en qu es y qu hace un objeto y no en cmo debe
implementarse. Durante el proceso de abstraccin es cuando se decide qu
caractersticas y comportamiento debe tener el modelo.

Aplicando la abstraccin se es capaz de construir, analizar y gestionar sistemas de
computadoras complejos y grandes que no se podran disear si se tratara de modelar a
un nivel detallado. En cada nivel de abstraccin se visualiza el sistema en trminos de
componentes, denominados herramientas abstractas, cuya composicin interna se ignora.
Esto nos permite concentrarnos en cmo cada componente interacta con otros
componentes y centrarnos en la parte del sistema que es ms relevante para la tarea a
realizar en lugar de perderse a nivel de detalles menos significativos.

14

En estructuras o registros, las propiedades individuales de los objetos se pueden
almacenar en los miembros. Para los objetos es de inters cmo estn organizados sino
tambin qu se puede hacer con ellos. Es decir, las operaciones que forman la internan
de un objeto son tambin importantes. El primer concepto en el mundo de la orientacin a
objetos naci con los tipos abstractos de datos (TAD). Un tipo abstracto de datos describe
no slo los atributos de un objeto, sino tambin su comportamiento (las operaciones).
Esto puede incluir tambin una descripcin de los estados que puede alcanzar un objeto.
Un medio de reducir la complejidad es la abstraccin. Las caractersticas y los procesos
se reducen a las propiedades esenciales, son resumidas o combinadas entre s. De este
modo, las caractersticas complejas se hacen ms manejables.

Clase

En trminos prcticos, una clase es un tipo definido por el usuario. Las clases son los
bloques de construccin fundamentales de los programas orientados a objetos. Booch
define una clase como un conjunto de objetos que comparten una estructura y un
comportamiento comunes. Una clase contiene la especificacin de los datos que
describen un objeto junto con la descripcin de las acciones que un objeto conoce cmo
ha de ejecutar. Estas acciones se conocen como servicios o mtodos. Una clase incluye
tambin todos los datos necesarios para describir los objetos creados a partir de la clase.
Estos datos se conocen como atributos, variables o variables instancia. El trmino atributo
se utiliza en anlisis y diseo orientado a objetos, y el trmino variable instancia se suele
utilizar en programas orientados a objetos.

Declaracin de un a clase

Antes de que un programa pueda crear objetos de cualquier clase, sta debe ser definida.
La definicin de una clase significa que se debe dar a la misma un nombre, dar nombre
tambin a los elementos que almacenan sus datos y describir los mtodos que realizarn
las acciones consideradas en los objetos.

Las definiciones o especificaciones no son un cdigo de programa ejecutable. Se utilizan
para asignar almacenamiento a los valores de los atributos usados por el programa y
reconocer los mtodos que utilizar el programa. Normalmente, se sitan en archivos
formando los denominados packages, se utiliza un archivo para varias clases que estn
relacionadas.

Formato:

class NombreClase
{
lista_de_miembros
}

15

En el Lenguaje Unificado de Modelado (UML, Unifield Modeling Language), una clase es
representada por un rectngulo que posee tres divisiones:



En donde:

- La parte superior: Contiene el nombre de la Clase
- La intermedia: Contiene los atributos (o variables de instancia) que
caracterizan a la Clase.
- La parte Inferior: Contiene los mtodos u operaciones, los cuales son la forma
como interacta el objeto con su entorno.

Atributos y Mtodos:

Atributos:

Los atributos o caractersticas de una Clase pueden ser de tres tipos, los que definen el
grado de comunicacin y visibilidad de ellos con el entorno, estos son:

- public (+, ): Indica que el atributo ser visible tanto dentro como fuera de
la clase, es decir, es accesible desde todos lados.
- private (-, ): Indica que el atributo slo ser accesible desde dentro de la
clase (slo sus mtodos lo pueden accesar).
- protected (#, ): Indica que el atributo no ser accesible desde fuera de la
clase, pero si podr ser accesado por mtodos de la clase
adems de las subclases que se deriven (herencia).
- defecto Si no especifica ningn tipo de acceso, se utiliza el acceso
por defecto, esto significa que la variable es accesible a
todas las clases contenidas en le mismo paquete.

Nombre de la clase
Atributos
Comportamiento
16

Mtodos:

Cada mtodo tiene asociado un tipo que se utiliza para controlar el acceso al mtodo.
Entre estos se encuentra:

- public (+, ): Indica que el mtodo ser visible tanto dentro como fuera de
la clase, es decir, es accsesible desde todos lados.
- private (-, ): Indica que el mtodo slo ser accesible desde dentro de la
clase (slo otros mtodos de la clase lo pueden accesar).
- protected (#, ): Indica que el mtodo no ser accesible desde fuera de la
clase, pero si podr ser accesado por mtodos de la clase
adems de mtodos de las subclases que se deriven
(herencia).
- defecto Si no especifica ningn tipo de acceso, se utiliza el acceso
por defecto, esto significa que el mtodo es accesible a
todas las clases contenidas en el mismo paquete.

Ejemplo:




class Punto
{
private int x; // coordenada x
private int y; // coordenada y


+ Punto()
+ Punto(int valorX, int Valory)
+ int regresaX()
+ int regresaY()
+ void asignaX(int valorX)
+ void asignaY(int valorY)
Punto
- int x;
- int y;
17

public Punto() // constructor sin argumentos
{
x = 0;
y = 0;
}

public Punto(int valorX , int valorY) // constructor
{
x = valorX;
y = valorY;
}
public int regresaX() // devuelve el valor de x
{
return x;
}
public int regresaY() // devuelve el valor de y
{
return y;
}
void asignaX(int valorX) // establece el valor de x
{
x = valorX;
}
void asignaY(int valorY) // establece el valor de y
{
y = valorY;
}
}

Objeto

En el mundo real, las personas identifican los objetos como cosas que pueden ser
percibidas por los cinco sentidos. Los objetos tienen propiedades especficas, como
posicin, tamao, color, forma, textura, etc. que definen su estado. Los objetos tambin
poseen ciertos comportamientos que los hacen diferentes de otros objetos.

Booch define un objeto como algo que tiene un estado, un comportamiento y una
identidad.

Imaginemos una mquina de una fbrica. El estado de la mquina puede estar
funcionando/ parando (on/off), hay que tener en cuenta su potencia, velocidad mxima,
velocidad actual, temperatura, etc. Su comportamiento puede incluir acciones para
arrancar y parar la mquina, obtener su temperatura, activar o desactivar otras mquinas,
conocer las condiciones de seal de error o cambiar la velocidad. Su identidad se basa en
18

el hecho de que cada instancia de una mquina es nica, tal vez identificada por un
nmero de serie. Las caractersticas que se eligen para enfatizar el estado y el
comportamiento se apoyarn en cmo un objeto mquina se utilizar en una aplicacin.
En un diseo de un programa orientado a objetos, se crea una abstraccin (un modelo
simplificado) de la mquina basada en las propiedades y en el comportamiento que son
tiles en el tiempo.

Martin y Odell definen un objeto como cualquier cosa, real o abstracta, en la que se
almacenan datos y aquellos mtodos (operaciones) que manipulan los datos.

Para realizar esa actividad, se aaden a cada objeto de la clase los propios datos
asociados con sus propios mtodos miembro que pertenecen a la clase.

Un mensaje es una instruccin que se enva a un objeto y que, cuando se recibe, ejecuta
sus acciones. Un mensaje incluye un identificador que contiene la accin que ha de
ejecutar el objeto junto con los datos que necesita el objeto para realizar su trabajo. Los
mensajes, por consiguiente, forman una ventana del objeto al mundo exterior.

El usuario de un objeto se comunica con el objeto mediante su interfaz, un conjunto de
operaciones definidas por la clase del objeto de modo que sean todas visibles al
programa. Una interfaz se puede considerar como una vista simplificada de un objeto. Por
ejemplo, un dispositivo electrnico como una mquina de fax tiene una interfaz de usuario
bien definida; por ejemplo, esa interfaz incluye el mecanismo de avance del papel,
botones de marcado, el receptor y el botn enviar. El usuario no tiene que conocer cmo
est construida la mquina internamente, el protocolo de comunicaciones u otros detalles.
De hecho, la apertura de la mquina durante el periodo de garanta puede anularla.

La representacin grfica de un objeto en UML:



Objeto : Clase X
Atributo1 = Expresin

Mtodo ()

Objeto : Clase X
(b) Notacin reducida de un objeto
(a) Notacin completa de un objeto
19


Encapsulacin

El encapsulado o encapsulacin de datos es el proceso de agrupar datos y operaciones
relacionadas bajo la misma unidad de programacin. En el caso de los objetos que
poseen las mismas caractersticas y comportamientos se agrupan en clases, que no son
ms que unidades o mdulos de programacin que encapsulan datos y operaciones.

Ocultamiento

La ocultacin de datos permite separar el aspecto de un componente, definido por su
interfaz con el exterior, de sus detalles internos de implementacin.

Diferencia entre Encapsulacin y Ocultamiento

Los trminos ocultacin de la informacin y encapsulacin de datos se suelen utilizar
como sinnimos, pero no siempre es as, y muy al contrario, son trminos similares pero
distintos. En Java no es lo mismo, ya los datos internos estn protegidos del exterior y no
se pueden acceder a ellos ms que desde su propio interior y por tanto, no estn ocultos.
El acceso al objeto est restringido slo a travs de una interfaz bien definida.

Herencia

Las clases no estn aisladas, sino que se relacionan entre s, formando una jerarqua de
clasificacin. Los objetos heredan las propiedades y el comportamiento de todas las
clases a las que pertenecen. La herencia organiza y facilita el polimorfismo y el
encapsulamiento permitiendo a los objetos ser definidos y creados como tipos
especializados de objetos preexistentes. Estos pueden compartir (y extender) su
comportamiento sin tener que volver a implementarlo. Esto suele hacerse habitualmente
agrupando los objetos en clases y estas en rboles o enrejados que reflejan un
Porsche911 : Carro
Color = Amarillo

ArrancarMotor ()

Marco : Alumno
(d) Objeto Marco de la clase Alumno
(c) Objeto Porsche911 de la clase
Carro
20

comportamiento comn. Cuando un objeto hereda de ms de una clase se dice que hay
herencia mltiple.

Polimorfismo

La quinta propiedad significativa de los lenguajes de programacin orientados a objetos
es el polimorfismo. Es la propiedad que indica, literalmente, la posibilidad de que una
entidad tome muchas formas. En trminos prcticos, el polimorfismo permite referirse a
objetos de clases diferentes mediante el mismo elemento de programa y realizar la misma
operacin de diferentes formas, segn sea el objeto que se referencia en ese momento.

Por ejemplo, cuando se describe la clase mamferos se puede observar que la operacin
comer es una operacin fundamental en la vida de los mamferos, de modo que cada tipo
de mamfero debe poder realizar la operacin o funcin comer. Por otra parte, una cabra o
una vaca que pastan en un campo, un nio que se come un caramelo y un len que
devora a otro animal, son diferentes formas que utilizan diferentes mamferos para realizar
la misma funcin (comer).

El polimorfismo adquiere su mxima expresin en la derivacin o extensin de clases, es
decir, cuando se obtiene una clase a partir de una clase ya existente, mediante la
propiedad de derivacin de clases o herencia.

I.3. Lenguajes orientados a objetos

Histricamente el lenguaje Simula (1967) es aceptado como el primer lenguaje que posee
las caractersticas principales de un lenguaje orientado a objetos. Fue creado para hacer
programas de simulacin, en donde los "objetos" son la representacin de la informacin
ms importante. Smalltalk (1972 a 1980) es posiblemente el ejemplo cannico, y con el
que gran parte de la teora de la programacin orientada a objetos se ha desarrollado.



El lenguaje de programacin C fue desarrollado por Dennis Ritche de AT&T en los
Laboratorios Bell que se utiliz para escribir y mantener el sistema operativo UNIX (hasta
que apareci C, el sistema operativo UNIX fue desarrollado por Ken Thompson en AT&T
mediante en lenguaje ensamblador o en lenguaje B). C es un lenguaje de propsito
COBOL ALGOL APL PASCAL
GPSS PROLOG
Lenguaje
Maquina
1950 1960 1970 1980 2000
Declarativos
Imperativos
Orientados a Objetos
Funcional
FORTRAN BASIC C ADA
SMALLTALK VISUAL BASIC JAVA
C#
LISP LM SCHEMA
1990
C++
21

general que se puede utilizar para escribir cualquier tipo de programa, pero su xito y
popularidad est especialmente relacionado con el sistema operativo UNIX. Fue
desarrollado como lenguaje de programacin de sistemas, es decir, un lenguaje de
programacin para escribir sistemas operativos.

Entre los lenguajes orientados a objetos se destacan los siguientes:


- Ada
- C#
- Clipper
- Object Pascal (Delphi)
- Gambas
- Eiffel
- Java
- JavaScript
- ObjectiveC
- R
- Perl
- PHP
- PowerBuilder
- Python
- Ruby
- Smalltalk
- VB.NET
- Visual FoxPro
- Visual Basic
- Visual Objects
- XBase++


I.4. Relaciones entre clases y objetos

Ahora ya definido el concepto de Clase, es necesario explicar cmo se pueden
interrelacionar dos o ms clases (cada uno con caractersticas y objetivos diferentes).

Antes es necesario explicar el concepto de cardinalidad de relaciones: En UML, la
cardinalidad de las relaciones indica el grado y nivel de dependencia, se anotan en cada
extremo de la relacin y stas pueden ser:

- uno o muchos: 1..* (1..n)
- 0 o muchos: 0..* (0..n)
- nmero fijo: m (m denota el nmero).

Ejemplo:



Un cliente puede tener asociadas muchas rdenes de Compra, en cambio una orden de
compra solo puede tener asociado un cliente.


22

Ejercicios:

En los Institutos Tecnolgicos cuenta con una plantilla de Catedrticos de entre 30 a 350
maestros y una poblacin Estudiantil de entre 100 y 500 alumnos. Cada Catedrtico
imparte clase a grupos de entre 5 a 45 Estudiantes.

Anlisis Orientado a Objetos (AOO)

a) Identifique las clases y proporcione una breve descripcin

Clases Descripcin





b) Por cada clase describa los atributos o caractersticas, descripcin de cada
concepto y el conjunto de valores permitidos (Dominio).

Clase Atributo Descripcin Dominio















c) Describa el comportamiento que tendr cada clase y su descripcin

Clase Comportamiento Descripcin









23

Diseo Orientado a Objetos (DOO)

d) Ahora desarrllelos como clase



e) Establezca la relacin entre las clases

Producto de Aprendizaje 1:

De los siguientes conceptos seleccione 10 y desarrllelo como clase, una vez
desarrolladas como clase relacione tres mediante cardinalidad, entregarlo de forma
impresa (25 puntos). Exponer en clase las tres clases relacionadas (15 puntos).

1 Actor 21 Empleado 41 Notebook
2 Avin 22 EquipoSonido 42 Pantaln
3 Blusa 23 Escuela 43 Peridico
4 Camin 24 Estadio 44 Persona
5 Camioneta 25 Estudiante 45 Pickup
6 Camisa 26 Fabrica 46 Pluma
7 Carro 27 Farmacia 47 Portafolio
8 Casa 28 Fraccionamiento 48 Profesionista
9 Catedrtico 29 Hospital 49 ProgramaRadio
10 CertificadoMdico 30 Ingeniero 50 ProgramaTV
11 CertificadoCalifiaciones 31 Lpiz 51 Revista
12 Coche 32 Laptop 52 Supermercado
13 Computadora 33 Libro 53 Telfono
14 Cuaderno 34 Licenciado 54 Terreno
15 Cuenta 35 Maestro 55 Tienda
16 CuentaAhorros 36 Mascota 56 Universidad
17 CuentaBancaria 37 Medico 57 Vehculo
18 CuentaCrdito 38 Mochila 58 Ventana
19 Director 39 Modulo 59 Vestido
20 Doctor 40 Museo 60 Zapato
24

Cada clase deber tener los siguientes trminos:

- Nombre de clase
- Atributos y Descripcin
- Comportamiento y Descripcin

Para las tres clases establezca:

- Relacin de las Clases

Programacin Orientada a Objetos (POO)

Programar las clases en un lenguaje orientado a objetos.

I.5. Papel de clases y objetos en el anlisis y el diseo

Durante el anlisis y las primeras etapas del diseo, el desarrollador tiene dos tareas
principales:

- Identificar las clases y objetos que forman el vocabulario del dominio del
problema.
- Idear los comportamientos de las clases para que satisfagan los requerimientos
del problema.

En conjunto, se llama a esas clases y objetos las abstracciones del problema, y se
denomina a esas estructuras cooperativas los mecanismos de la implantacin. Durante
estas fases del desarrollo, el inters principal del desarrollo debe estar en la vista externa
de estas abstracciones y mecanismos.

Esta vista representa el marco de referencia lgico del sistema y, por tanto, abarca la
estructura de clases y la estructura de objetos del mismo. En las etapas finales del diseo
y entrando ya en la implantacin, la tarea del desarrollador cambia: el centro de atencin
est en la vista interna de estas abstracciones y mecanismos, involucrando a su
representacin fsica. Pueden expresarse estas decisiones de diseo como parte de la
arquitectura de mdulos y la arquitectura de procesos del sistema.

La experiencia de algunos analistas nos lleva a aplicar en primer lugar el criterio orientado
a objetos porque esta aproximacin es mejor a la hora de servir de ayuda para organizar
la complejidad innata de los sistemas de software, al igual que ha servido de ayuda para
describir la complejidad organizada de sistemas complejos tan diversos como las
computadoras, plantas, galaxias o grandes instituciones sociales.



25

Bsicamente los productos del anlisis orientado a objetos (AOO) sirven como modelos
de los que se puede partir para un diseo orientado a objetos (DOO); los productos del
diseo orientado a objetos pueden utilizarse entonces como anteproyectos para la
implementacin completa de unos sistemas utilizando mtodos de programacin
orientado a objetos (POO), de esta forma se relacionan AOO, DOO y POO.


26

II. Metodologa de Solucin de Problemas.

La principal razn por lo que las personas aprenden a programar es para solucionar
problemas utilizando como herramienta la computadora. El proceso de resolucin de un
problema con una computadora conduce a la escritura de un programa y a su ejecucin.
Aunque el proceso de disear programas es, esencialmente, creativo, se puede
considerar una serie de fases o pasos comunes, que generalmente deben seguir todos
los programadores.

Las fases de resolucin de un problema con computadora son:

Anlisis del problema El problema es analizado teniendo presente las
especificaciones de los requisitos dados por el cliente de la
empresa o la persona que encarga el programa. AOO
Diseo del algoritmo Una vez analizado el problema, se disea una solucin que
conducir a un algoritmo que resuelva el problema. DOO
Codificacin La solucin se escribe en un lenguaje de alto nivel y se
obtiene el programa fuente. POO
Ejecucin, verificacin y depuracin El programa se ejecuta (se corre), se verifica que
realice correctamente que realice lo que se analizo y diseo,
y se depuran todos los errores.
Implementacin Se pone en produccin el programa (gradual, parcial o total)
Mantenimiento El programa se actualiza realizando los cambios que sean
necesarios, de modo que cumpla con las necesidades del
usuario.
Documentacin Escritura de las diferentes fases del ciclo de vida del
software esencialmente del anlisis, diseo y codificacin
(Manuales del usuario y Manuales del programador (o
Manuales del Sistema)).

II.1. Descripcin del problema (enunciado)

La resolucin de problemas se puede dividir en tres fases importantes:

- Anlisis del problema
- Diseo del algoritmo
- Resolucin del algoritmo en la computadora

27




II.2. Definicin de solucin (especificaciones)

El propsito del anlisis de un problema es ayudar al programador para llegar a una cierta
compresin de la naturaleza del problema. El problema debe estar bien definido, si se
desea llegar a una solucin satisfactoria. Para poder definir con precisin el problema se
requiere de las especificaciones de entrada y salida descritas en detalle.

El anlisis del problema requiere de una lectura previa del problema, a fin de obtener una
idea general de lo que solicita. La segunda lectura deber servir para responder a las
siguientes preguntas:

- Qu datos necesita para resolver el problema? (Entrada)
- Qu informacin debe de proporcionar la resolucin del problema? (Salida)
- Qu pasos se requieren para que con los datos de entrada se transformen en
informacin de salida? (Algoritmo)


Resolucin de
un problema
Anlisis del
problema
Diseo del
Algoritmo
Resolucin del
problema con la
computadora
Anlisis del
problema
Definicin del
problema
Especificaciones
de entrada
Especificaciones
de salida
28

Ejemplo:

Definicin del problema: Obtenga la superficie y la longitud de un circulo.

Anlisis:

Entrada: Qu datos necesita para resolver el problema?
Radio
Salida: Qu informacin debe de proporcionar la resolucin del problema?
Superficie y Longitud
Algoritmo: Qu pasos se requieren para que con los datos de entrada se
transformen en informacin de salida? (Unidad III)

II.3. Diseo de la solucin (modelado)

Una computadora no tiene la capacidad para resolver problemas, ms que cuando se le
proporcionan los pasos sucesivos a realizar para solucionar dicho problema. Estos pasos
indican las instrucciones a ejecutar por la maquina, conocindoseles como algoritmo.

La informacin que se le proporciona al algoritmo constituye la entrada y la informacin
producida por el algoritmo constituye la salida.





Ejercicio: Desarrolle el diseo de la solucin del siguiente problema.

Calcule el salario neto de un trabajador a partir de la lectura del nombre, horas trabajadas,
precio por hora y el clculo de impuesto son el 25% del salario bruto (horas trabajadas por
precio por hora). Como resultado final imprima el nombre, salario bruto, impuestos y
salario neto.
Superficie y
Longitud de
un circulo
Entrada de
datos
Radio
Calculo de la
Superficie
S=tRadio
2
Calculo de la
longitud
L=2tRadio
Salida de
resultados
S y L
29

II.4. Desarrollo de la solucin (codificacin)

La codificacin es la escritura en un lenguaje de programacin de la representacin del
algoritmo desarrollada en las etapas precedentes. Dado que el diseo de un algoritmo es
independiente del lenguaje de programacin utilizado para la implementacin, el cdigo
puede ser escrito con igual facilidad en un lenguaje o en otro.

Para realizar la conversin del algoritmo en programa se debe utilizar las instrucciones y
sentencias diseadas en el lenguaje de programacin y siguiendo los pasos del algoritmo.


II.5. Depuracin y pruebas (pruebas)

La prueba de los programas consiste en ejecutar el programa utilizando datos similares a
los reales o en su caso datos reales y observar los resultados arrojados por el sistema,
tratando de depurar los errores de sintaxis, los errores de ejecucin y los errores lgicos:

- Errores de sintaxis. Ocurren cuando una o varias sentencias violan una o ms
reglas gramaticales de lenguaje de programacin.
- Errores de ejecucin. Son errores que producen una terminacin anmala o una
terminacin no esperada en tiempo de ejecucin, por ejemplo una divisin por
cero.
- Error lgico. Es cuando un programa no realiza la operacin que estaba prevista.


II.6. Documentacin (manuales)

Todos los sistemas independientemente de su aplicacin tienen una documentacin
asociada. Esta se clasifica en 2 grupos:

- Documentacin del usuario
- Documentacin del sistema

Documentacin del usuario

Contiene informacin relevante para la persona que manejara el sistema y contiene los
siguientes tpicos:
o Requerimientos de hardware y software
o Instalacin y configuracin del sistema
o Explicacin del funcionamiento del sistema
o Manual de referencias (informes de errores en forma detallada)



30

Documentacin del sistema

Son todos los documentos relacionados con la aplicacin del sistema, desde las
especificaciones de los requisitos hasta el plan de pruebas de la depuracin.

Este tipo de documentacin puede incluir los siguientes temas:

o Lenguaje de programacin utilizado para el desarrollo del sistema (Compaa,
versin, etc.)
o Por cada procedimiento, funcin o mtodo, una descripcin de su funcionamiento,
describiendo a detalle los parmetros que recibe as como la salida que produce.
o Plan de pruebas (por modulo, por unidad de programa, por sistema).

Los siguientes problemas realice su correspondiente anlisis:

1. Obtenga la superficie de un triangulo



2. Obtenga el total a pagar aplicando un descuento del 5%.

3. Obtenga los valores de X
1
y X
2
para resolver ecuaciones de segundo grado:



4. De los valores a y b, obtenga cuantas veces cabe el valor b en el valor a.

5. Obtenga la suma de los nmeros del 1 al 100

Producto de Aprendizaje 2: De los siguientes problemas realice el anlisis (40
puntos).

1. Obtenga el cuadrado de 243
2. Obtenga el permetro y la superficie de un cuadrado
3. Obtenga la suma de dos nmeros
4. Obtenga el producto de dos nmeros
5. Obtenga la resta de dos nmeros
6. Obtenga la divisin de dos nmeros
7. Obtenga el cuadrado de un numero
8. Obtenga el permetro de un rectngulo
31

9. Obtenga la hipotenusa de un triangulo rectngulo



10. Obtenga el rea y el volumen de un cilindro



11. Obtenga la conversin de grados Celsius a grados Fahrenheit



12. Obtenga la conversin de grados Fahrenheit a grados Celsius

13. Obtenga el rea de un triangulo en funcin de las longitudes de sus lados:


Donde:


14. Dado x numero de metros convertirlos a pies y pulgadas (1 metro = 39.37
pulgadas, 1 pie = 12 pulgadas)

15. Obtenga el salario de un obrero en base a las horas extras trabajadas

16. Obtenga la fuerza de atraccin entre dos masas m
1
y m
2
separadas por una
distancia d:




Donde G es la constante de gravitacin universal:



32

III. Herramientas de programacin.

Para la representacin de algoritmos se debe utilizar algn mtodo que permita la
independizacin del lenguaje de programacin elegido para su ejecucin. Para conseguir
este objetivo se precisa que el algoritmo sea representado grficamente o
numricamente. Los mtodos ms utilizados para la representacin de algoritmos son:

- Diagramas de Flujo
- Diagrama NassiSchneiderman (NS)
- Lenguaje de especificacin de algoritmos (Pseudocdigo)

III.1. Simbologa

Diagramas de Flujo

EL diagrama de flujo (Flowchart) es una de las tcnicas de representacin de algoritmos
ms antigua y a la vez ms utilizada. Un diagrama de flujo (DF) es un diagrama que utiliza
cajas y lneas que indican el flujo de la informacin.



Smbolo Funcin

Inicio/Fin. Comienzo y ltimo smbolo de los
diagramas de flujos.

Entrada. Se especifican los datos de entrada del
algoritmo.
33

Smbolo Funcin

Salida. Se especifican los datos de salida del
algoritmo.

Proceso. Se especifica cualquier tipo de operacin
expresin matemticas (calculo, almacenamiento,
transferencia)

Conector. Enlaza diferentes partes del diagrama de
flujo

Fechas. Indican el flujo de datos en el algoritmo

Diagrama NassiSchneiderman (NS)

El diagrama NS tambin conocido como diagrama Chapin, es semejante al DF pero sin
flechas de direccin, por lo cual utiliza un rectngulo para representar los pasos del
algoritmo.

Pseudocdigo

Esta tcnica es una combinacin entre lenguaje natural y lenguaje de alto nivel.

Inicio
Accin 1
Accin 2

Accin n
Fin

III.2. Reglas para la construccin de diagramas

Diagramas de Flujo

Los diagramas de flujo comienzan con el smbolo de inicio/fin
indicando el comienzo del diagrama:

Y terminan con el smbolo de inicio/fin indicando el trmino del
diagrama:


Inicio
Fin
34

Entre los smbolos de inicio/fin se ponen las acciones (asignacin, proceso, entrada,
salida, etc.) que forman parte del diagrama.



Diagrama NassiSchneiderman (NS)

Para este tipo de diagrama se utiliza un rectngulo, en el cual comienza con la leyenda
Inicio y termina con la leyenda Fin. Entre estos dos recuadros de desarrolla el contenido
del algoritmo.



Ejercicio:

Definicin del problema: Obtenga la superficie y la longitud de un circulo.
Accin 1
Accin 2
...
Accin n
Inicio
Fin
Inicio
Accin 1
Accin 2
...
Accin n
Fin
35

Anlisis:

Entrada: Radio
Salida: Superficie, Longitud
Algoritmo:


Diagrama de Flujo Diagrama NS




III.3. Pseudocdigo

En este tipo de representacin se comienza con la leyenda Inicio y termina con Fin y entre
los trminos de comienzo y terminacin se escribe el desarrollo del algoritmo.

Inicio
Leer Radio
Superficie=t *Radio^2
Longitud=2*t *Radio
Imprimir Superficie, Longitud
Fin


Inicio
Fin
Superficie= *Radio^2
Longitud=2* *Radio
Leer Radio
Superficie,
Longitud
Inicio
Leer Radio
Superficie= *Radio^2
Longitud=2* *Radio
Imprimir
Superficie, Longitud
Fin
36

Ejercicios:

1. Calcule el salario neto de un trabajador a partir de la lectura del nombre, horas
trabajadas, precio por hora y el clculo de impuesto son el 25% del salario bruto
(horas trabajadas por precio por hora). Como resultado final imprima el nombre,
salario bruto, impuestos y salario neto.

2. Obtenga la superficie de un triangulo



3. Obtenga el total a pagar aplicando un descuento del 5%.
4. Obtenga los valores de X
1
y X
2
para resolver ecuaciones de segundo grado:



5. De los valores a y b, obtenga cuantas veces cabe el valor b en el valor a.
6. Obtenga la suma de los nmeros del 1 al 100.
7. Disear el algoritmo que lea el valor correspondiente a una distancia en millas
marinas y las escriba expresadas en metros. Sabiendo que 1 milla marina equivale
a 1852 metros.
8. Elabore un algoritmo que lea dos valores y los intercambie.

Estructura selectivas

Las estructuras selectivas se utilizan para forma decisiones lgicas. En las estructuras se
evala una condicin y en funcin del resultado se puede realizar una accin u otra.

Estructuras selectivas simples
Diagrama de Flujo Diagrama NS



Condicin
Accin 1
Verdadero Falso
Accin 1
Condicin
Falso Verdadero
37

Pseudocdigo

Si Condicin
Accin 1
Fin Si


9. La tienda Artculos de Limpieza S.A. de C.V. realiza un descuento del 5% a todas
las compras mayores a 2500.00 pesos. Elabore un algoritmo que resuelva este
problema.

10. La empresa Electrnica Digital desea un programa que determine si una persona
es solvente econmicamente en base a los ingresos y los gastos; si los ingresos
son mayores a los gastos la persona es solvente. Elabore un algoritmo que
resuelva este problema.

11. En la clnica Salud Eterna desean un programa que determine si una persona
est enferma en base a su temperatura corporal; si la temperatura corporal es
mayor a 36.5 el programa debe mandar un mensaje que diga Enfermo.

Estructuras selectivas dobles
Diagrama de Flujo Diagrama NS


Pseudocdigo

Si Condicin
Accin 1
En otro caso
Accin 2
Fin Si


12. Escriba un algoritmo que calcule el total a pagar en una tienda departamental, si la
compra excede de 15,000 pesos se concede un descuento del 10%, en caso
contrario el descuento es del 5%.

13. Elabora un algoritmo que en base a dos nmeros imprima el mayor.

Condicin
Accin 1
Verdadero Falso
Accin 2
Accin 1
Condicin
Falso Verdadero
Accin 2
38

14. Elabore un algoritmo que en base a tres nmeros imprima el mayor.

15. Elabore un algoritmo que en base a cuatro nmeros, los imprima en forma
descendente.

Estructuras de seleccin mltiple

En la vida se presentan problemas en los cuales presentan ms de dos alternativas como
posibilidades y eso se soluciona con estructuras de seleccin mltiple.

Diagrama de Flujo



Diagrama NS



Pseudocdigo

Segn sea Selector hacer
1: Accin 1
2: Accin 2

n: Accin n
En otro caso:
Accin OC
Fin Segn


16. Elabore un algoritmo que en base al nmero del mes imprima el mes
correspondiente como cadena de caracteres.

Selector
Accin 1 Accin n Accin 2 Accin OC
1 2
n
Otro Caso

Accin 1
Selector
Verdadero
Accin 2
1
Accin n Accin OC

2 n
Otro
Caso
39

17. Elabore un algoritmo que en base a un nmero (entre 10 y 20) imprima su valor
con letra.

18. Elabore un algoritmo que en base al nmero de da de la semana imprima que da
es.


Estructuras de repeticin

Cuando se requiere que un conjunto de instrucciones se repita varias veces se utiliza las
estructuras de repeticin.


Diagrama de Flujo
For/Next


While/Mientras


Repeat/Repite

Diagrama NassiSchneiderman (NS)
For/Next



While/Mientras




Condicin
Inc/Dec
Inicio
Proceso
Si
No
Condicin
Proceso Verdadero
Falso
Condicin
Proceso
Verdadero
Falso
Inc/Dec
Inicio
Proceso
While Condicin
Proceso
40

Repeat/Repite


Pseudocdigo
For/Next

Para I = VI Hasta VF [Inc Valor/Dec Valor]
Proceso
Fin Para

While/Mientras

Mientras Condicin
Proceso
Fin Mientras

Repeat/Repite
Repite
Proceso
Hasta Condicin


19. Elabore un algoritmo que lea 10 calificaciones e imprima el promedio.

20. Elabore un algoritmo que lea dos nmeros e imprima la serie de nmeros que
existe entre el nmero menor a el nmero mayor.

21. Elabore un algoritmo que lea una serie de valores e imprima el valor ms grande
de la serie. El fin de la serie esta denotado por el valor 9999.

22. Calcular la media de una serie de nmeros positivos. El valor cero como entrada
indican que se ha finalizado la serie de nmeros positivos.

Producto de Aprendizaje 3.1: De los siguientes problemas elabore el anlisis y
algoritmo (20 puntos).

1. Obtenga el cuadrado de 243

2. Obtenga el permetro y la superficie de un cuadrado

3. Obtenga la suma de dos nmeros

4. Obtenga el permetro de un rectngulo

5. Obtenga la hipotenusa de un triangulo rectngulo

6. Disear el algoritmo que pida por teclado dos nmeros enteros y muestre su
suma, resta, multiplicacin, divisin y el resto (mdulo) de la divisin. Si la
Repeat Condicin
Proceso
41

operacin no es conmutativa, tambin se mostrar el resultado invirtiendo los
operadores.
7. Lea las horas, minutos y segundos; calcule el tiempo total en segundos.

8. Suponiendo que una paella se puede cocinar exclusivamente con arroz y gambas,
y que para cada cuatro personas se utiliza medio kilo de arroz y un cuarto de kilo
de gambas, escribir un algoritmo que pida por pantalla el nmero de comensales
para la paella, el precio por kilo de los ingredientes y muestre las cantidades de los
ingredientes necesarios y el costo de la misma.

9. Obtenga el rea y el volumen de un cilindro



10. Dado x grados Celsius obtenga su conversin a grados Fahrenheit



11. Obtenga el rea de un triangulo en funcin de las longitudes de sus lados:


Donde:


12. Dado x numero de metros convertirlos a pies y pulgadas (1 metro = 39.37
pulgadas, 1 pie = 12 pulgadas)

13. Una tonelada mtrica equivale a 35,273.92 onzas. Elabore un algoritmo que lea el
peso de un paquete de cereal para el desayuno en onzas y que obtenga como
salida el nmero de cajas necesarias para llenar una tonelada mtrica de cereal,
as como deber proporcionar cuantas onzas sobran. El algoritmo deber permitir
al usuario repetir este proceso las veces que desee.

14. Dado tres nmeros, determinar si la suma de cualquier pareja de ellos es igual al
tercer nmero. Si se cumple la condicin, escribir iguales en caso contrario
Distintos.

15. Elabore un algoritmo lea 3 calificaciones de la materia de Fundamentos de
Programacin y determine si el alumno Aprobado o Reprobado en base a su
promedio.

16. Elabore un algoritmo que en base a un valor numrico determine si es Alto o Bajo.
Si el nmero es mayor a 100 imprima Alto, en caso contrario imprima Bajo.

17. Realice un algoritmo que calcule el monto a pagar por el servicio de
estacionamiento, teniendo en cuenta que por la primera hora o fraccin de estada
se tiene una tarifa de 10 pesos y las restantes tienen un costo de 6 pesos. Se tiene
como datos: hora de entrada, hora de salida (formato militar).


42


18. Desarrolle un algoritmo que permita convertir calificaciones numricas, segn la
siguiente tabla:

A = 10, B =9, C = 8, D = 7, E = 6 y F= 5 a 0.

19. Elabore un algoritmo que lea 4 nmeros e imprima el mayor de ellos.

20. Desarrolle un algoritmo que permita determinar a partir de un nmero de das,
ingresado por teclado, Cuntos aos, meses, semanas y das; constituyen el
nmero de das proporcionado?

21. Elabore un algoritmo que lea un nmero e imprima sus dgitos en forma individual:
Ejemplo: Dame un nmero? 7539
9
3
5
7

22. Obtenga el salario de un obrero en base a las horas extras trabajadas. El salario
se calcula sumando al sueldo base las horas extra. El sueldo base es equivale a
$450.00 y las horas extra se calculan en base a la siguiente tabla:

1 a 10 hrs $11.50
11 a 12 hrs $ 13.00
13 a 20 hrs $ 14.00
21 y ms hrs $ 15.00

23. Elabore un algoritmo que lea un nmero decimal e imprima su representacin en
binario.

24. Desarrolle un algoritmo para la empresa Constructora Tecnovivir Casas C.A., que
le permita calcular e imprimir la nmina para un total de 50 obreros a quien se le
paga por horas trabajadas, la cual se paga a 50 pesos.

25. Elabore un algoritmo que lea un nmero e imprima su factorial.
Ejemplo: 5 = 5 * 4 * 3 * 2 * 1 = 120

Nota: El factorial de 0 (cero) por notacin es 1.


43

III.4. Tipos de datos y expresiones

Tipos de datos

Existen dos grupos de tipos de datos:

- Simples (bsicos, primitivos, sin estructura)
- Compuestos (Estructurados, Complejos)

Dentro de los tipos de datos Simples se encuentran:

- Numricos
o Enteros
5, 15, 1350, 50000, etc.

o Punto Flotante (Reales)
0.00008, 3.7452, 8.72, 370000.0, etc.
En aplicaciones cientficas se requiere una notacin especial para manejar
nmeros muy grandes (como la masa de la tierra) o muy pequeos (como la
masa de un electrn) esta notacin es llamada notacin exponencial o
notacin cientfica:

367 520 100 000 000 000 00 ~ 3.675201E+20
0.000 000 000 030 257 ~ 3.0257E11

- Lgicos (Booleanos)
Los datos tipo lgico es aquel que solo puede tomar dos valores:
Verdadero (True)
Falso (False)

- Carcter (Char)
El tipo de datos carcter es un conjunto finito y ordenado de caracteres. Un dato
tipo carcter contiene un solo carcter. Un carcter se delimita por comillas
sencillas:
A, a, 1, $, etc.

Los grupos de caracteres son los siguientes:

o Caracteres alfabticos: A, B,,Z, a, b,,z
o Caracteres numricos: 0, 1, 2,,9
o Caracteres Especiales: +, , /, *, ^, ., ;, <, >, $, #, etc.

Y dentro los Compuestos o Estructurados se encuentran:

44

- Cadena de caracteres (String)
Una cadena de caracteres es una sucesin de caracteres que se encuentra
delimitado por comillas dobles:

Hola Mundo
30 de septiembre de 2010
Esta es una cadena de caracteres llamada tambin String

- Clases (Class)
- Arreglos (Array)
- Registros (Records)
- Listas (LinkerList)
- Conjuntos (Set)
- rboles (Tree)
- Grafos (Graph)
- Abstractos (Abstract)
- Archivos (Files)


En la siguiente tabla presentamos los 8 tipos de dato primitivos de Java, el nmero de bits
que ocupan y el rango de valores que pueden tomar.

Tipo Tamao en bits Rango de valores
boolean 1
true o false Nota: El No. de bits puede variar segn la
plataforma
char 16 \u0000 hasta \uFFFF' Conjunto Unicode de ISO
byte 8
128 a +127
2
7
a 2
7
1
short 16
32,768 a +32,767
2
15
a 2
15
1
int 32
2,147,483,648 a +2,147,483,647
2
31
a 2
31
1
long 64
9,223,372,036,854,775,808 a
+9,223,372,036,854,775,807
2
63
a 2
63
1
float 32
Rango negativo:
3.4028234663852886E+38 hasta
1.40129846432481707E45
Rango positivo:
1.40129846432481707E45 hasta
3.4028234663852886E+38
double 64
Rango negativo:
1.797693134862157E308 hasta
4.94065645841246544E324
Rango positivo:
4.94065645841246544E324 hasta
1.797693134862157E308



45

Tokens elementos lxico de los programas

Existen 5 clase de tokens: identificadores, palabras reservadas, literales, operadores y
otros.

Identificadores

Los identificadores pueden representar variables, constantes, mtodos, nombres de
archivos, etc.

Diagrama de contexto de los identificadores:











Regla para formar un identificador:
1. Debe comenzar por una letra
2. Despus de la 1er. Letra puede contener letras, dgitos o guin de piso
3. No estn permitidos los espacios en blanco
4. No deben formar palabras reservadas
5. Java es sensibles a las maysculas y minsculas
6. En Java la longitud de los identificadores no tiene lmite.

Expresiones

Las expresiones son combinaciones de constantes, variables, operadores, operandos,
parntesis, funciones, etc.


c ) (b a + + 3
Operando
Variable
Operador
Constante
Funcin
46

Expresiones aritmticas

Las expresiones aritmticas son anlogas a las expresiones matemticas.

Operadores aritmticos:

+ Suma
Resta
* Multiplicacin
/ Divisin
% Modulo

Ejemplos:

5 + 3 = 8
3 2 = 1
5 * 3 = 15
17/2 = 8
17/2.0 = 8.5
(double) 17/2 = 8.5
20 % 7 = 6

Transforme las siguientes formulas en expresiones computacionales:






47

III.5. Estructuras lgicas

Otro tipo de expresiones son las lgicas, o booleanas, cuyo valor puede ser true
(verdadero) o false (falso) y se denominan expresiones booleanas en honor a matemtico
George Boole, quien desarrollo el lgebra booleana.

Mediante los operadores relacionales se pueden hacer comparaciones entre valores tipo
numrico y carcter.

Por ejemplo:

3 < 6 V
0 > 9 F
8 <= 5 F

A = 3 y B = 4
A>B F
A<B V
A<=B V
B==4 V
X=2 Y = 3 Z = 9
X>Z F
Y<X F
Z!=X V
Operadores Lgicas

Java cuenta con los operadores lgicos para formar condiciones ms complejas. Los
operadores lgicos son:



Operador Descripcin Corto Circuito
&& And condicional
Si
|| Or condicional
& And lgico
No
| Or lgico
^ Or exclusivo
! Negacin

Tablas de verdad de los operadores lgico:

&& And Condicional

A B A && B
false false false
false true false
true false false
true true true

Con un operador && (And condicional) ser true si y solo si todas sus entradas son true.


48

|| Or Condicional
A B A || B
false false false
false true true
true false true
true true true

Con un operador || (Or condicional) ser true si por lo menos una de sus entradas es true.
Operadores & And lgico y | Or lgico funcionan de manera idntica a los operadores &&
And condicional y || Or condicional, con la excepcin de de que los operadores lgicos
siempre se evaluaran todas las expresiones (es decir, no realizan una evaluacin de corto
circuito).

^ Or Exclusivo
A B A ^ B
false false false
false true true
true false true
true true false

Con un operador ^ (Or exclusivo) es true si y solo si una de sus operandos es true y el
otro es false

! Negacin
A !A
false true
true false

Por medio del operador ! (Negacin) se invierte el significado de la condicin. A diferencia
de los operadores &&, ||, &, | y ^ que son operadores binarios, el operador ! es unario.

Por ejemplo: Si A=3, B=2 y C=7

a) (A>5) || (B<C) V
b) (A!=B) && (B==C)
c) (A>=B) & (C>=5)
d) !(A<=9) | (5>B)


Reglas de prioridad

Las expresiones que tienen dos o ms operadores requieren de reglas matemticas que
permitan determinar el orden de las operaciones, a estas reglas se les llama reglas de
prioridad.
49

Prioridad Operadores Asociatividad
1 () Agrupacin ID
2 (tipo) Cast DI
3 * / % ID
4 + ID
5 < <= > >= ID
6 == != ID
7 & ID
8 ^ ID
9 | ID
10 && ID
11 || ID
12 = *= /= %= += = DI
Cul es el valor de las siguientes expresiones?
a) 15 * 14 3 *7
b) (24 + 2 * 6) / 4
c) 3 + 4 * (8 * (4 (9 + 31) / 4))
d) 15 + 3 10 40 / (23 % 6)

Estructura general de un programa en Java

import Importacin de paquetes con clases predefinidas.


public class NombreDeLaClase {
Declaracin de variables miembro de la clase
public static tipo main (String[] args) {
Declaracin de variables locales
Sentencias de la funcin main()
[return tipo;]
}


acceso static tipo NombreDelMtodo1 (Lista de Argumentos) {
Declaracin de variables del mtodo 1
Sentencias del mtodo 1
[return tipo;]
}



50

acceso static tipo NombreDelMtodo2 (Lista de Argumentos) {
Declaracin de variables del mtodo 2
Sentencias del mtodo 2
[return tipo;]
}
}

Variables

Una variable es un identificador donde se almacena un valor con un cierto tipo de dato.
Las variables de tipos bsicos almacena datos del tipo primitivos, las variables de clases o
variables de objetos, hacen referencias a objetos. Una constante es una variable cuyo
contenido no puede ser modificado.

Declaracin de variables

Ejemplo:

int x, y;
float a, b, c;
char letra1;

Inicializacin de variables

Una de las variantes que se puede hacer en una declaracin es inicializar una variable
con un valor a ser declarada.

Ejemplos:

int x, y = 0;
float a, b, c = 100.0f;
char letra1 = A;

Se pueden declarar una variable en tres lugares:
- En una clase, como miembro de clase
- Al principio de un mtodo o bloque de cdigo
- En el punto de utilizacin.
tipo identificador
,
;

tipo identificador
,
; Expresin =
;
51

Ejemplo de las tres formas de declarar una variable:




Objetos que permiten E/S por consola.


En Java, la entrada y salida se lee y escribe en flujos (streams). La fuente bsica de
entrada de datos es el teclado y la fuente de salida es pantalla. La clase System define
dos referencias a objetos static para la gestin de entrada (in) y salida (out).


Salida (System.out)


El objeto out definida en la clase System est asociado con el flujo de salida, que dirige
los datos a consola y permite visualizarlos en pantalla, por ejemplo:
System.out.println(Esta es una cadena);
Se visualizar en pantalla: Esta es una cadena.


52

Descripcin del mtodo print:


void print(cadena) Despliega una cadena en pantalla.
void println(cadena) Despliega una cadena en pantalla y al final un carcter de nueva
lnea (\n).


Con estos mtodos se puede escribir cualquier cadena o dato de los tipos primitivos,
como por ejemplo:


System.out.println( "Valores de las Variables: \n" +
"a=" + a +"\n" +
"b=" + b +"\n" +
"x=" + x +"\n" +
"y=" + y );


Entrada (System.in)


Por medio de un objeto Scanner se puede leer datos desde un programa, esta clase
pertenece al paquete java.util y debe ser importada. Para poder utilizarlo instancie un
objeto de la siguiente forma:

Scanner identificador = new Scanner (System.in);


Esta expresin crea un objeto Scanner y determina que leer los datos desde teclado
mediante los siguientes mtodos:


identificador.nextBoolean() Para Booleanos
identificador.nextByte() Para nmeros Enteros tipo byte
identificador.nextShort() Para nmeros Enteros tipo short
identificador.nextInt() Para nmeros Enteros tipo int
identificador.nextLong() Para nmeros Enteros tipo long
identificador.nextFloat() Para nmeros flotantes
identificador.nextDouble() Para nmeros doubles
identificador.next() Para el siguiente token
identificador.nextLine() Para una lnea


53






Recordemos el siguiente ejemplo: Obtenga la superficie y la longitud de un crculo.

Anlisis:

Entrada: Radio
Salida: Clculos de Superficie y Longitud
Algoritmo:

54





El siguiente ejemplo lee dos nmeros enteros, los suma y muestra el resultado mediante
ventanas de Windows.


Inicio
Fin
Superficie= *Radio^2
Longitud=2* *Radio
Leer
Radio
Superficie,
Longitud
55







Las instrucciones:
num1 = Integer.parseInt(primerNumero);
num2 = Integer.parseInt(segundoNumero);

Convierten los datos tipo String a tipo int y en caso de que ocurra una un error envan una
excepcin de formato de numrico.
56

El mtodo showMessageDialog de la clase JOptionPane tiene varias formas de enviarles
parmetros:

1.
public static void showMessageDialog(Component componentePadre,
Object Mensaje)

Donde los parmetros:

componentePadre Determina la ventana en que se desplegara el mensaje, si es null,
se despliega en la ventana por defecto.
Mensaje Objeto a desplegar

2.
public static void showMessageDialog(Component componentePadre,
Object Mensaje,
String Titulo,
int TipodeMensaje)

Donde los parmetros:

componentePadre Determina la ventana en que se desplegara el mensaje, si es null,
se despliega en la ventana por defecto.
Mensaje Objeto a desplegar
Titulo Cadena de caracteres de la caja de dialogo
TipodeMensaje Valor entero que determina que imagen se despliega segn la
siguiente tabla:

Tipo de cuadro de dilogo de mensaje Icono Descripcin
JOptionPane.ERROR_MESSAGE

Ventana de Error
JOptionPane.INFORMATION_MESSAGE

Ventana Informativa
JOptionPane.WARNING_MESSAGE

Ventana de
Advertencia
JOptionPane.QUESTION_MESSAGE

Ventana de
introduccin de datos
o seleccin de alguna
alternativa
57

Tipo de cuadro de dilogo de mensaje Icono Descripcin
JOptionPane.PLAIN_MESSAGE Sin Icono Ventana estndar





Ejercicios: Elabore los siguientes programa en Java

1. Calcule el salario neto de un trabajador a partir de la lectura del nombre, horas
trabajadas, precio por hora y el clculo de impuesto son el 25% del salario bruto
(horas trabajadas por precio por hora). Como resultado final imprima el nombre,
salario bruto, impuestos y salario neto.

2. Obtenga la superficie de un triangulo


58

3. Obtenga el total a pagar aplicando un descuento del 5%.
4. Obtenga los valores de X
1
y X
2
para resolver ecuaciones de segundo grado:



5. De los valores a y b, obtenga cuantas veces cabe el valor b en el valor a.
6. Obtenga la suma de los nmeros del 1 al 100.
7. Disear el algoritmo que lea el valor correspondiente a una distancia en millas
marinas y las escriba expresadas en metros. Sabiendo que 1 milla marina equivale
a 1852 metros.
8. Elabore un algoritmo que lea dos valores y los intercambie.

Sintaxis de la seleccin simple:

Estructuras selectivas simples
Diagrama de Flujo Diagrama NS


Pseudocdigo

Si Condicin
Accin 1
Fin Si



if (Expresin) Accin;
o
if (Expresin)
Accin;

if (condicin) {accin1; accin2,,accin n} ;

o

Condicin
Accin 1
Verdadero Falso
Accin 1
Condicin
Falso Verdadero
Nota: El if solo soporta una instruccin, si
desea poner ms de una sentencia debe
utilizar un bloque de cdigo ({..}).
59

if (condicin) {
accin1;
accin 2;
.
.
accin n;
}

9. La tienda Artculos de Limpieza S.A. de C.V. realiza un descuento del 5% a todas
las compras mayores a 2500.00 pesos. Elabore un algoritmo que resuelva este
problema.

10. La empresa Electrnica Digital desea un programa que determine si una persona
es solvente econmicamente en base a los ingresos y los gastos; si los ingresos
son mayores a los gastos la persona es solvente. Elabore un algoritmo que
resuelva este problema.

11. En la clnica Salud Eterna desean un programa que determine si una persona
est enferma en base a su temperatura corporal; si la temperatura corporal es
mayor a 36.5 el programa debe mandar un mensaje que diga Enfermo.

Sintaxis de la seleccin doble:

Estructuras selectivas dobles
Diagrama de Flujo Diagrama NS



Pseudocdigo

Si Condicin
Accin 1
En otro caso
Accin 2
Fin Si


Condicin
Accin 1
Verdadero Falso
Accin 2
Accin 1
Condicin
Falso Verdadero
Accin 2
60

if (condicin)
accin 1;
else
accin 2;

if con ms de una sentencia y usando un boque de cdigo:

if (condicin) {
accin1;
accin 2;

accin n;
}
else {
accin1;
accin 2;

accin n;
}

12. Escriba un algoritmo que calcule el total a pagar en una tienda departamental, si la
compra excede de 15,000 pesos se concede un descuento del 10%, en caso
contrario el descuento es del 5%.

13. Elabora un algoritmo que en base a dos nmeros imprima el mayor.

14. Elabore un algoritmo que en base a tres nmeros imprima el mayor.

15. Elabore un algoritmo que en base a cuatro nmeros, los imprima en forma
descendente.

Sintaxis de Seleccin mltiple:

Diagrama de Flujo


Selector
Accin 1 Accin n Accin 2 Accin OC
1 2
n
Otro Caso

61

Diagrama NS




Pseudocdigo

Segn sea Selector hacer
1: Accin 1
2: Accin 2

n: Accin n
En otro caso:
Accin OC
Fin Segn



switch (selector) {
case constante 1: Accin 1;
break;
case constante 2: Accin 2;
break;

default: Accin n;
}

16. Elabore un algoritmo que en base al nmero del mes imprima el mes
correspondiente como cadena de caracteres.

17. Elabore un algoritmo que en base a un nmero (entre 10 y 20) imprima su valor
con letra.

18. Elabore un algoritmo que en base al nmero de da de la semana imprima que da
es.



Accin 1
Selector
Verdadero
Accin 2
1
Accin n Accin OC

2 n
Otro
Caso
switch (letra) {
case a: caseA: case : case A:
case e: caseE: case : case :
case i: caseI: case : case :
case o: caseO: case : case :
case u: caseU: case : case :
System.out.println(letra + es vocal);
}
62

Sintaxis de los ciclos Java:


Diagrama de Flujo
For/Next


While/Mientras


Repeat/Repite


Diagrama NassiSchneiderman (NS)
For/Next



While/Mientras


Repeat/Repite



Condicin
Inc/Dec
Inicio
Proceso
Si
No
Condicin
Proceso Verdadero
Falso
Condicin
Proceso
Verdadero
Falso
Inc/Dec
Inicio
Proceso
While Condicin
Proceso
Repeat Condicin
Proceso
63

Pseudocdigo
For/Next

Para I = VI Hasta VF [Inc Valor/Dec Valor]
Proceso
Fin Para

While/Mientras

Mientras Condicin
Proceso
Fin Mientras

Repeat/Repite
Repite
Proceso
Hasta Condicin



for

1. for (Inicializacin; Condicin; Incremento)
sentencia;

2. for (Inicializacin; Condicin; Incremento) {
sentencia 1;
sentencia 2;

sentencia n;
}


while

1. while (condicin)
sentencia;

2. while (condicin) {
sentencia 1;
sentencia 1;

sentencia n;
}




64

do while

1. do
sentencia;
while (condicin);


2. do {
sentencia 1;
sentencia 2;

sentencia n;
} while (condicin);

19. Elabore un algoritmo que lea 10 calificaciones e imprima el promedio.

20. Elabore un algoritmo que lea dos nmeros e imprima la serie de nmeros que
existe entre el nmero menor a el nmero mayor.

21. Elabore un algoritmo que lea una serie de valores e imprima el valor ms grande
de la serie. El fin de la serie esta denotado por el valor 9999.

22. Calcular la media de una serie de nmeros positivos. El valor cero como entrada
indican que se ha finalizado la serie de nmeros positivos.


Clase String La Clase String proporciona los mecanismos para el manejo de cadenas.
Ya que no se puede cambiar el valor de un String una vez que se ha
creado, esta clase se usa principalmente para analizar, manipular y
obtener los valores de las cadenas. Aunque hay mtodos que permiten
modificar y aadir al valor de la cadena, estos mtodos no modifican el
String en si, sino que regresan un nuevo String con los valores deseado.

Mtodos Descripcin
String() Crea un Objeto String.
String(char ch[])
Crea un Objeto String basado en el arreglo
ch[].
String(String s)
Crea un Objeto String con el valor s
especificado.
65

Mtodos Descripcin
char charAt(int pos)
Regresa el carcter que se encuentra en la
posicin pos.
int compareTo(String otroString)
Regresa un int donde:
< 0 El valor del String es menor al
otroString.
0 El valor del String es igual a
otroString
> 0 El valor del String es mayor a
otroString.
String concat(String str) Regresa la concatenacin del String y el str.
boolean equals(Object otroObjeto)
Regresa true si otroObjeto es String y tiene
el mismo valor.
boolean equalsIgnoreCase(String OtroString)
Compara el String con otroString sin
importar las maysculas y minsculas.
int length() Regresa la longitud del String
int indexOf(String str)
Regresa la posicin donde se encuentra str
en el String, en caso de no encontrarlo
regresa -1.
int indexOf(String str, int ini)
Regresa la posicin donde se encuentra str en
el String comenzando en la posicin ini.
int indexOf(char ch)
Regresa la primera posicin donde se
encuentra ch en el String.
int indexOf(char ch, int ini)
Regresa la primera posicin donde se
encuentra ch en el String comenzando en
la posicin ini.
int lastIndexOf(String str)
Regresa la ltima posicin donde se
encuentra str en el String.
int lastIndexOf(String str, int ini)
Regresa la ltima posicin donde se
encuentra str en el String que se encuentre
antes de la posicin ini.

66

Mtodos Descripcin
String replace(char viejoch, char nuevoch)
Remplaza todos los caracteres viejoch por
el carcter nuevoch.
String substring(int inicio, int fin)
Regresa una subcadena desde inicio hasta
fin.
String substring(int inicio)
Regresa una subcadena desde inicio hasta
final de la cadena.
String toLowerCase() Regresa el valor del String en minsculas
String toString() Regresa el valor del String.
String toUpperCase() Regresa el valor del String en maysculas.
String trim()
Regresa la String sin los espacios a la izq y
der.
Static String valueOf(double d)
static String valueOf(float f)
static String valueOf(long l)
static String valueOf(int i)
static String valueOf(char ch)
static String valueOf(boolean b)
Regresa un String que contiene el valor del
tipo de dato especificado.
Static String valueOf(Object obj)
Regresa un String que representa una
cadena del Object.

23. Elabore un programa que lea su nombre, lo imprima Normal y en forma de espejo.
Ejemplo:
Dame tu nombre: Jos Prez
Jos Prez-zerP seJ

24. Elabore un programa que lea su nombre y lo despliegue por palabra.

25. Elabore un programa que lea su nombre y despliegue cuantas vocales, literales y
espacios tiene.




67

Producto de Aprendizaje 3.2: Desarrolle los siguientes programas en Java (20
puntos)

1. En la empresa Aceros Industrializados S.A. de C.V. los obreros recibieron un
incremento del 7.6% retroactivo a 6 meses. Elabore un programa que en base el
salario mensual despliegue el monto total de incremento por los 6 meses.

2. Elabore un programa que lea 4 nmeros e imprima el mayor de ellos.

3. Elabore un programa que lea los tres parciales de la materia de Fundamentos de
Programacin y en base el Promedio despliegue si Acredita o No Acredita la
materia.

4. Elabore un programa que lea un nmero e imprima sus dgitos en forma individual:
Ejemplo: Dame un nmero? 7539

9
3
5
7

5. Obtenga el salario de un obrero en base a las horas extras trabajadas. El salario se
calcula sumando al sueldo base las horas extra. El sueldo base es equivale a
$450.00 y las horas extra se calculan en base a la siguiente tabla:

1 a 10 hrs $11.50
11 a 12 hrs $ 13.00
21 y ms hrs $ 15.00

6. Elabore un programa que lea un nmero decimal e imprima su representacin en
binario.

7. Una empresa de autobuses hace viajes desde la Capital del Pas hacia ciudades del
interior, para lo cual dispone de dos tipos de vehculos, pequeos y grandes, con
capacidad de 20 y 60 pasajeros respectivamente.

Cada vez que parte un autobs del terminal de la ciudad Capital es anotado el tipo
de vehculo ( P o G) y el nmero de pasajeros que transporta.
La empresa desea un reporte al final del da con la informacin siguiente:

a) El tipo de autobs:
b) La cantidad de pasajeros.
c) El mensaje "Ganancia" si en el autobs viaja un nmero de pasajeros igual o
mayor que el 50% de su capacidad, y "Prdida" en caso contrario.

8. Elabore un programa que lea un nmero e imprima su factorial.

Ejemplo: 5 = 5 * 4 * 3 * 2 * 1 = 120

Nota: El factorial de 0 (cero) por notacin es 1.
68

9. Pedir un nmero entre 0 y 9999 y decir cuntas cifras tiene.

10. Elabore un programa que lea serie de nmeros e imprima su media. El final de los
nmeros de denota con un -1.

11. Elabore un programa que lea 10 calificaciones e imprime el promedio.

12. Pedir 10 calificaciones entre 0 a 10 y mostrarla de la forma: Insuficiente (0 a 6),
Suficiente (7), Bien (8), Muy bien (9) y Excelente (10).

13. Elabore un algoritmo que lea dos nmeros diferentes, he imprima el rango del
nmero ms pequeo al nmero ms grande.

14. Solicite un nmero y despliegue el valor individual de cada digito de la siguiente
forma: 7489 siete, cuatro, ocho, nueve.

15. Pedir un nmero de 0 a 99 y mostrarlo escrito. Por ejemplo, para 56 mostrar:
cincuenta y seis.

16. Elabore un programa que lea un nmero positivo diferente de cero e imprima la
secuencia de nmeros en forma descendente hasta el cero.

17. Leer un nmero y mostrar su cuadrado, repetir el proceso hasta que se introduzca
un nmero negativo.

18. Elabore un programa que imprima la suma de los nmeros impares del 1 al 100
utilizando ciclos.

19. Leer un nmero e indicar si es positivo o negativo. El proceso se repetir hasta que
se introduzca un 0.

20. Realizar un juego para adivinar un nmero. Para ello pedir un nmero N, y luego ir
pidiendo nmeros indicando mayor o menor segn sea mayor o menor con
respecto a N. El proceso termina cuando el usuario acierta.

21. Elabore un programa en Java que lea su nombre y lo despliegue en mayscula cada
palabra.
Ejemplo:
JOS PREZ
Jos Prez


69

IV. Programacin orientada a objetos y modelado.

Qu es un Modelo?

Un Modelo es una simplificacin de la realidad.

Por qu Modelamos?

Construimos modelos para comprender mejor el sistema que estamos desarrollando.

El Modelado no es slo para los grandes sistemas. Sin embargo, es absolutamente cierto
que, cuanto ms grande y complejo es el sistema, el modelado se hace ms importante,
por una simple razn:

Construimos modelados de sistemas complejos porque no
podemos comprender el sistema en su totalidad

IV.1. Caractersticas del modelo orientado a objetos

Hay un cierto desacuerdo sobre exactamente qu caractersticas de un mtodo de
programacin o lenguaje le definen como "orientado a objetos", pero hay un consenso
general en que las caractersticas siguientes que son las ms importantes:

Abstraccin: La abstraccin es la propiedad de los objetos que consiste en tener
en cuenta slo los aspectos ms importantes desde un punto de vista
determinado y no tener en cuenta los restantes.

Encapsulamiento: Es el proceso de agrupar datos y operaciones relacionadas bajo la
misma unidad de programacin. En el caso de los objetos que
poseen las mismas caractersticas y comportamientos se agrupan en
clases, que no son ms que unidades o mdulos de programacin
que encapsulan datos y operaciones.

Herencia: La idea de la herencia es permitir la creacin de nuevas clases basadas
en clases existentes. Cuando heredamos de una clase existente,
reusamos (o heredamos) mtodos y campos, y agregamos nuevos
campos y mtodos para cumplir con la situacin nueva. Cada vez que
encontremos la relacin "es-un" entre dos clases, estamos ante la
presencia de herencia.

La clase ya existente es llamada superclass, o clase base, o clase
padre, mientras que la clase nueva es llamada subclase, clase derivada,
o clase hija.

70

Polimorfismo: Es la propiedad que indica, literalmente, la posibilidad de que una
entidad tome muchas formas. En trminos prcticos, el polimorfismo
permite referirse a objetos de clases diferentes mediante el mismo
elemento de programa y realizar la misma operacin de diferentes
formas, segn sea el objeto que se referencia en ese momento.

IV.2. Elementos primordiales en el modelo de objetos

La programacin Orientada a Objetos trata de cumplir las necesidades de los usuarios
finales, ests tareas se realizan mediante el modelado del mundo real, el soporte
fundamental de este paradigma de programacin.

Elementos primordiales:

Abstraccin

Recordemos que la representacin en UML de una clase es as:



Modele las siguientes clases, con sus atributos, constructores y mtodos (cambia (set),
regresa (get) y un mtodo general de desplegado)

- Persona
- Vehculo
- Figura (Geomtrica)

Encapsulamiento

De los modelos anteriores desarrllelas como clase utilizando la siguiente notacin.



Nombre de la clase
Atributos
Comportamiento
71

public class NombreDeLaClase {
Declaracin de variables miembro de la clase

Constructores

acceso static tipo NombreDelMtodo1 (Lista de Argumentos) {

}

acceso static tipo NombreDelMtodo2 (Lista de Argumentos) {

}
}

Herencia

Al crear una clase, en vez de declarar miembros (variables y mtodos) completamente
nuevos, el programador puede designar que la nueva clase herede los miembros de una
clase existente. Esta clase existente se conoce como superclase, y la nueva clase se
conoce como subclase. En otros lenguajes de programacin, como C++ se refieren a la
superclase como clase base y a la subclase como clase derivada. Una vez creada, cada
subclase se puede convertir en superclase de futuras subclases. Una subclase
generalmente agrega sus propias variables y mtodos, por lo tanto, una subclase es ms
especfica que una superclase y representa un grupo ms concreto de objetos.
La herencia explcita es cuando una subclase hereda en forma directa los atributos y
comportamiento de la superclase, mientras que la herencia implcita es cuando una
subclase hereda atributos y comportamientos de dos o ms niveles arriba de las
jerarquas de clase.


Prstamo
Hipotecario
Personal Prendario
Superclase
Subclases
72

A veces es difcil decidir cul es la relacin de herencia ms ptima entre el diseo de
clases. Consideremos por ejemplo el caso de empleados de una empresa, existen
diferentes tipos de clasificacin segn sea el criterio de discriminacin, por ejemplo por
tipo de empleado:



Por tipo de percepcin:



Por tiempo de dedicacin laboral:



Por tipo de contratacin:


Empleado
Directivo Administrativo Obrero
Empleado
Confianza
Comisin Asalariado
Empleado
Discontinuo TiempoFijo Horas
Empleado
Base
Anual Mensual
73

Como se darn cuenta es difcil establecer cul de estos modelos es el ms adecuado, lo
mejor es decidirse hasta que tenga la aplicacin real y el usuario le diga cul es la mejor
forma de organizacin de su empresa y as trasladarla al diseo jerrquico de clases.

En una clase existen secciones pblicas, privadas, protegidas y visibilidad amigable (por
defecto). Los elementos pblicos son accesibles a todos los mtodos de cualquier clase;
los elementos privados son accesibles slo a los miembros de la clase en la que estn
definidos, los elementos protegidos pueden ser accedidos clases del mismo paquete y
clases derivadas del mismo o de otro debido a la propiedad de la herencia; y los
elementos de la visibilidad por defecto son accesibles desde cualquier clase del mismo
paquete.

En general, herencia pblica significa que una subclase tiene acceso a los elementos
pblicos y protegidos de la superclase. Los elementos pblicos se heredan como
pblicos, los elementos protegidos permanecen protegidos. En java la herencia siempre
es pblica, las clases para ser visibles desde otros paquetes se deben declarar con e
modificador public, en caso contrario la clase est restringida al paquete donde se
declaro.

Es necesario hacer una diferencia entre la relacin es un y la relacin tiene un. La
relacin es un representa la herencia, por ejemplo considere la siguiente jerarqua de
clases:




En este caso el Automvil es un Vehculo, mientras que la relacin tiene un sera el
Automvil tiene un volante, lo cual marca la diferencia, todos los automviles son
Vehculos pero no todos los Vehculos son Automviles y finalmente todos los
Automviles tiene un volante. Por lo tanto una clase base (o superclase) es una clase ms
general de la cual se derivan clases derivadas (o subclases).

Una clase derivada (o subclase) es una clase que hereda los atributos y comportamiento
de una clase base (o superclase). Sintaxis:

public class Subclase extends Superclase {
acceso nuevoMiembro
...
public tipo NuevoMtodo (Lista de Parmetros)

}


Vehculo
Automvil Camin Bicicleta
74

Una subclase es una especializacin de una superclase. En consecuencia el constructor
de la superclase debe ser llamado antes de crear un objeto de la superclase y el
constructor de la subclase debe ser invocado despus. Haciendo un comparativo, lo
mismo ocurre con los objetos de la subclase, el objeto de la superclase debe de existir
antes de convertir en un objeto a la subclase.




En el siguiente ejemplo se tiene la clase A y B, con sus respectivos constructores, la clase
D hereda todas las caractersticas de la clase A, mientras que la clase E hereda las
caractersticas de la clase B. Dentro de la clase principal EjemploConstructores, al
instanciar el objeto d1 del tipo D, primero se crear el objeto A mediante su constructor y
posteriormente se ejecutara el constructor de D, al instanciar el objeto e1 del tipo E,
ocurrir algo similar, ejecutndose primero el constructor de B y posteriormente el
constructor de E.










75

Resultado de la ejecucin:



En el ejemplo anterior vimos como los constructores se invocan implcitamente, pero que
pasara si queremos invocar un constructor con argumentos, entonces lo invocaramos de
forma explcita por medio del comando:

super(lista de argumentos)

Si es un mtodo de la super clase sera:

super.metodo(lista de argumentos).

Ejemplo:

public class Persona {
protected String nombre;
public Persona(String nombre) { // Constructor de Persona
this.nombre = new String(nombre);
}
}
public class Estudiante extends Persona {
private long numeroControl;
public Estudiante(String nom, long nc) { // Constructor de Estudiante
super(nom); // llamada al constructor de la superclase (Persona).
numeroControl = nc;
}

}

Ejercicio: Desarrolle el siguiente diseo en Java y cree una clase principal donde instancie
un objeto de cada clase.

76




Una vez implementado en BlueJ se tendr un diseo as:






+ Presamo()
+ void Prestamo (float M, float I)
+ float calculaIntereses()
+ void actualizaMonto(float M)
+ void actualizaInteres(float I)
+ String muestra()
- float Monto
- float Interes
Prestamo
Hipotecario Personal Prendario
-String Inmueble
-int AniosHipo
+ Hipotecario()
+ Hipotecario(float M,
float I, String In, int A)
+ String muestra()
-String TipoDocumento
-String FechaVen
+ Personal()
+ Personal(float M, float I,
String D, String F)
+ String muestra()
-String Prenda
- float ValorPrenda
+ Prendario()
+ Prendario(float M,
float I, String P, float V)
+ String muestra()
77


78










79



Resultado de la ejecucin:


80

Polimorfismo

En programacin orientada a objetos se denomina polimorfismo a la capacidad del cdigo
de un programa para ser utilizado con diferentes tipos de datos u objetos. Tambin se
puede aplicar a la propiedad que poseen algunas operaciones de tener un
comportamiento diferente dependiendo del objeto (o tipo de dato) sobre el que se aplican.

Se puede clasificar el polimorfismo en dos grandes clases:

- Polimorfismo dinmico (herencia-redefinicin) 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.



Implementacin en BlueJ:

Animal
dormir()
Len
dormir()
Oso
dormir()
Tigre
dormir()
dormir (){
System.out.println(Zzzzz);
}
dormir (){
System.out.println(Sobre el vientre);
}
dormir (){
System.out.println(Sobre la espalda);
}
dormir (){
System.out.println(En un rbol);
}
81









82





Clase abstracta.

Cuando pensamos en un tipo de clase, suponemos que los programas crearn objetos de
ese tipo, sin embargo, existen casos en los que es conveniente declarar clases para las
cuales el programador no pretende instanciar objetos. Dichas clases se denominan clases
abstractas, debido a que estas solo se utilizan como superclases en la jerarqua de
herencias, nos referiremos a ellas como superclases abstractas. Estas clases no pueden
utilizarse para instanciar objetos, porque las clases abstractas se declaran incompletas,
las subclases deben declarar las partes faltantes.

El propsito de una clase abstracta es proporcionar una superclase apropiada, a partir de
la cual se puedan heredar otras clases. Las clases que pueden usarse para instanciar
objetos se conocen como clases concretas, dichas clases proporcionan implementaciones
de todos los mtodos que declaran. Podramos tener una superclase llamada
Bidimensional y derivar a partir de ella clases concretas como Cuadrado, Circulo y
Triangulo. Tambin podramos tener una superclase abstracta llamada Tridimensional y
derivar de ella clases concretas como Cubo, Esfera y Tetraedro. Las clases abstractas
son demasiado genricas como para crear objetos reales; slo especifican lo que las
subclases tienen en comn. Necesitamos ser ms especficos antes de poder crear
objetos. Por ejemplo, si alguien le dice dibuje una figura, Qu figura dibujara?. Las
clases especficas proporcionan los aspectos especficos que hacen que sea razonable el
crear instancias de objetos.
83

Una jerarqua de clases no necesita contener clases abstractas, sin embargo,
comnmente se utilizan jerarquas de clases encabezadas por superclases abstractas
para reducir las dependencias de cdigo cliente en un tipos de subclases especficas. Por
ejemplo considere la siguiente jerarqua de clases:



En este jerarqua de clases la superclase abstracta Figura, en el siguiente nivel tenemos
otros dos clases abstractas Bidimensional y Tridimensional y en el ltimo nivel se declaran
clases concretas las cuales son para las figuras bidimensionales Circulo, Cuadrado y
Triangulo, mientras que las figuras tridimensionales son Esfera, Cubo y Tetraedro.

Para que una clase sea abstracta se debe declarar con la palabra reservada abstract.
Una clase abstracta por lo general tiene uno o ms mtodos abstractos (los mtodos
static no pueden ser abstractos). Un mtodo abstracto es un mtodo con la palabra
reservada abstract en su declaracin.

public abstract class NombreDeClase {
public abstract tipo Mtodo ();

}

Los mtodos abstractos no proporcionan implementaciones. Una clase que contiene
mtodos abstractos debe declararse como clase abstracta. Cada subclase concreta de
una clase abstracta debe proporcionar implementaciones concretas de los mtodos
abstractos de la superclase. Los constructores no se heredan, por los que no pueden
declararse como abstractos.

Aunque no podemos crear instancias de objetos de superclases abstractas, podemos
utilizar superclases abstractas para crear variables que puedan guardar referencias de
subclases concretas derivadas de la superclases.


Ejemplo de polimorfismo

Considere la siguiente jerarqua de clases:

Figura
Bidimensional Tridimensional
Circulo Cuadrado Triangulo Esfera Cubo Tetraedro
84



Comenzaremos con la superclase abstracta Figura, la cual declara la interfaz para la
jerarquas (es decir, el conjunto de mtodos que puede invocar un programa en todos los
objetos Figura), observe tambin que en el diagrama de clases, el nombre de la clase
abstracta Figura aparece en cursivas.

Mtodos
regresaArea regresaVolumen regresaNombre toString
Figura 0.0 0.0 abstract
Predeterminado
de Object
Punto 0.0 0.0 Punto [x,y]
Circulo t r
2
0.0 Circulo [x,y]; Radio = r
Cilindro 2 t r h + 2 t r
2
t r
2
h Cilindro
[x,y]; Radio = r;
Altura = h

La clase Figura proporciona los mtodos regresaArea, regresaVolumen y regresaNombre,
adems como es una extensin de la clase Object, hereda los 11 mtodos, entre ellos se
encuentran toString, por lo que tendr que ser redefinido.

Implementacin de BlueJ:















Figura
Punto
Circulo
Cilindro
85




86




87

Resultado de la ejecucin:


- Polimorfismo esttico (sobrecarga) es aqul en el que los tipos a los que se aplica
el polimorfismo deben ser explicitados y declarados uno por uno antes de poder
ser utilizados.

Ejemplo: El siguiente programa declara una clase llamada Sobrecarga con cuatro
mtodos llamados despliega que se encuentran sobrecargados. El primer mtodo no
recibe parmetros, el segundo recibo solo un parmetro tipo int, el tercero recibo dos
parmetros tipo int y por ltimo el cuarto mtodo recibe dos parmetros tipo float. El
funcionamiento de cada mtodo depende de los parmetros que reciba, desplegando en
pantalla el nmero de argumentos recibidos, los tipos y valores (con excepcin del
mtodo sin parmetros, el cual solo despliega en pantalla un mensaje).

















88




El programa principal EjemploSobrecarga1 instancia un objeto llamado Sob1,
posteriormente invoca a los mtodos despliega enviando varios nmeros y tipos de
argumentos diferentes, incluso ningn.





El siguiente programa declara una clase principal llamada EjemploSobrecarga2, con
cuatro mtodos llamados Area que se encuentran sobrecargados. El primer y segundo
mtodo calcula el rea de un cuadrado y reciben un argumento cada uno, el primer de
ellos recibe un tipo int y el segundo lo recibe tipo float. El tercer y cuarto mtodo calcula
en rea de un rectngulo, reciben dos argumentos, los parmetros del tercer mtodo son
de tipo int y el cuarto mtodo sus parmetros son de tipo float. Regresan un valor tipo long
(primer y tercer mtodo) y un valor tipo double (el segundo y cuarto mtodo). Adems se
utiliza la clase DecimalFormat para formatear los datos de salida.


89










+ Area (int L): long
+ Area (float l): double
+ Area (int b, int a): long
+ Area (float b, float a): double
EjemploSobrecarga2
90

IV.3. Representacin grfica del diseo





IV.4. Relacin entre la programacin orientada a objetos y la estructurada

Investigar este tema y entregarlo como producto de aprendizaje



91

Producto de Aprendizaje 4: Desarrolle los siguientes programas en Java (40 puntos)

1. Implemente el ejercicio de Figura/Punto/Circulo/Cilindro donde se puedan capturar
las variables de cada clase.



2. Elabore una clase principal que tenga 6 mtodos sobrecargados llamado
areaTriangulo, que realizaran el clculo del rea de un triangulo en base a lo
siguiente:

- Con un parmetro, se asume que es un triangulo Equiltero y el rea se
calcula:




Donde a es el lado del triangulo

- Con dos parmetros, el rea se calcula:




Donde b es la base y a es la altura del triangulo

- Con tres parmetros, el rea se calcula::



Donde a, b y c son los valores de las longitudes de los lados del triangulo y
p se calcula as:




92

Los primeros 3 mtodos sobrecargados recibirn datos tipo int y los restantes 3,
datos tipo double. El valor de retorno de todos los mtodos ser double.

Mande a imprimir a pantalla los resultados de todos los mtodos.

3. Elabore una clase principal que tenga 6 mtodos sobrecargados llamado
areaCuadrilatero, que realizaran el clculo del rea de un cuadriltero en base a lo
siguiente:

- Dos parmetros, rea de un romboide y se calcula:



Donde b es la base y a es la altura del romboide

- Tres parmetros, rea de un trapezoide o cualquier cuadriltero y se
calcula as:



Donde

son las diagonales y es el ngulo que lo conforma (Ver


figura).

- O seis parmetros y se calcula as:



Siendo: ngulo comprendido entre los lados .
ngulo comprendido entre los lados
93

Los primeros 3 mtodos sobrecargados recibirn datos tipo long y los restantes,
datos tipo double. El valor de retorno de todos los mtodos ser double.

Mande a imprimir a pantalla los resultados de todos los mtodos.

4. Investigar el tema IV.4 Relacin entre la programacin orientada a objetos y la
estructurada



94

V. Implementacin Orientada a Objetos.
V.1. Estructura de una clase





V.2. Elementos de una clase

Nombre. Cada clase debe tener un nombre distintivo y nico. Una clase se puede
representar solo con el nombre.



Atributos. Un atributo es una propiedad de una clase y se identifica por un nombre. La
clase puede tener cualquier nmero de atributos o carecer de estos.

Figura
Origen
Mover()
Dibujar()
Tamao()
Nombre
Atributos
Operaciones
Figura
95



Operaciones. Una operacin es la implementacin de un servicio que puede ser
requerido para que muestre un comportamiento, en otras palabras, una
operacin es una abstraccin de algo que se puede hacer a un objeto. Al
igual que los atributos una clase puede tener cualquier nmero de
operaciones e incluso ninguna.


Organizacin de atributos y operaciones

Cuando se dibuja una clase, no hay por qu mostrar todos sus atributos y todas sus
operaciones, de hecho, en la mayora de los casos solo se presentan los atributos y
operaciones ms relevantes o importantes. Si se quiere decir que existen ms de uno de
estos elementos se pueden poner puntos suspensivos ().

Cliente
Nombre
Direccion
Telefono
Fecha_Nac
Atributos
Rectngulo
Mover()
Dibujar()
Tamao()
Operaciones
96



Declaracin en Java:

Declaracin de una clase en general Declaracin de una clase principal
public class NombreDeLaClase {
Declaracin de variables miembro de la clase
acceso tipo NombreDelMtodo1 (Lista de parmetros) {
Declaracin de variables del mtodo 1
Sentencias del mtodo 1
[return tipo;]
}

acceso static tipo NombreDelMtodo2 (Lista de parmetros) {
Declaracin de variables del mtodo 2
Sentencias del mtodo 2
[return tipo;]
}
}
public class NombreDeLaClase {
Declaracin de variables miembro de la clase
public static tipo main (String[] args) {
Declaracin de variables locales
Sentencias de la funcin main()
[return tipo;]
}
acceso static tipo NombreDelMtodo1 (Lista de parmetros) {
Declaracin de variables del mtodo 1
Sentencias del mtodo 1
[return tipo;]
}

acceso static tipo NombreDelMtodo2 (Lista de parmetros) {
Declaracin de variables del mtodo 2
Sentencias del mtodo 2
[return tipo;]
}


V.3. Clase principal

En la programacin orientada a objetos los componentes principales son las clases y los
objetos.

La clase principal es aquella que contiene el mtodo principal llamado main.

Estructura de una clase principal en Java:
Auditor
Constructor y
Destructor
Buscar_inf()
Confrontar()

97



V.4. Crear objetos

Por medio del operador new se crean objetos en Java y la sintaxis en la siguiente:



Ejemplo:

1. La empresa Aceros Industrializados SA de CV requiere de un programa que
controle a sus Directivos (2), Empleados (5) y Obreros (10). Los Directivos tienen
las siguientes caractersticas: Nombre, Direccin, Edad, Telfono, Puesto, Sueldo
Mensual y Metas, mientras que los Empleados tienen los atributos: Nombre,
Direccin, Edad, Telfono, Puesto, Sueldo Mensual y Departamento y los Obreros
tiene las siguientes variables: Nombre, Direccin, Edad, Telfono, Puesto, Sueldo
Semanal y Responsabilidades. Modele las clases y elabore un programa en Java
que las implemente, adems cree un objeto de cada una, capturando los datos de
cada objeto.

2. La compaa Alextra paga a sus empleados en forma semanal. La compaa tiene
cuatro tipo de empleados: empleados Asalariados que reciben un salario fijo,
empleados por horas, que segn las horas trabajadas recibir su sueldo de la
siguiente forma: las primeras 40 horas se pagan a un precio y las excedentes se
pagan 1.5 veces el precio normal. Empleados por comisin, que su sueldo es el
10% de sus ventas y empleados asalariado por comisin, que recibe un salario
publicclass NombreDeLaClasePrincipal
{
public static void main(String[] args)
{
instrucciones;

}
}
Cuerpo de la
clase principal
Cuerpo de
main
1.
clase identificador;
identificador = new clase();
2.
clase identificador = new clase();
98

base ms el 6% de sus ventas. Cada empleado tiene Nombre, Domicilio, Telfono
y Nmero de Seguro Social. Modele las clases y elabore un programa en Java que
las implemente, adems cree un objeto de cada una, capturando los datos de
cada objeto.

Producto de Aprendizaje 5:

1. El Instituto tecnolgico de Aguascalientes desea un programa que controle a sus
alumnos de Licenciatura, Maestra y Doctorado. Los alumnos de Licenciatura tiene
los Atributos: Nombre, Domicilio, Telfono, Edad, Especialidad y Promedio,
mientras que los alumnos de Maestra tiene los siguientes variables miembro:
Nombre, Domicilio, Telfono, Edad, Investigacin Maestra y Fecha de entrega.
Los estudiantes de Doctorado tiene las siguientes variables: Nombre, Domicilio,
Telfono, Edad, Proyecto de Doctorado y Monto de la Investigacin. Modele las
clases y elabore un programa en Java que las implemente, adems cree un objeto
de cada una, capturando los datos de cada objeto.

2. De las siguientes clases realice su modelado y cree un programa en Java
instanciando un objeto de cada clase capturando los datos para cada variable
miembro. Se desea representar un triangulo, el cual est definido por tres puntos,
cada uno de los cuales tiene dos coordenadas X, Y. El triangulo tiene adems
color de lnea y un color de relleno, un color por su parte est definido por tres
valores numricos entre 0 y 255 (estndar RGB por Red-Green-Blue). El primer
valor numrico define la intensidad del rojo, el segundo el verde y el tercero el
azul. Adems el triangulo tendr las funciones de calcular el permetro del
triangulo y calcular el rea.



99

VI. Modularidad.

La modularidad es la capacidad que tiene un sistema de ser estudiado, visto o
entendido como la unin de varias partes que interactan entre s y que trabajan
para alcanzar un objetivo comn, realizando cada una de ellas una tarea
necesaria para el cumplimiento de dicho objetivo. Cada una de esas partes en que
se encuentre dividido el sistema recibe el nombre de mdulo. Idealmente un
mdulo debe poder cumplir las condiciones de caja negra, es decir, ser
independiente del resto de los mdulos y comunicarse con ellos (con todos o slo
con una parte) a travs de unas entradas y salidas bien definidas.

Las programacin modular aplicada a la programacin orientada a objetos se le
denomina Modularidad a la propiedad que permite subdividir una aplicacin en
partes ms pequeas (llamadas mdulos), cada una de las cuales debe ser tan
independiente como sea posible de la aplicacin en s y de las restantes partes.

En Java existen dos clases de mdulos: las clases y los mtodos. Para escribir un
programa se tienen que combinar estos dos mdulos.

Los mtodos (tambin llamados funciones o procedimientos en otros lenguajes de
programacin) son mini programas dentro de un programa. Por medio de los
mtodos se realizar tareas de un proyecto. Los mtodos tienen las siguientes
propiedades:

- Un bloque de cdigo que tiene un nombre,
- Recibe unos parmetros o argumentos (opcionalmente),
- Contiene sentencias o instrucciones para realizar algo (opcionalmente) y
- Devuelve un valor (opcionalmente).

VI.1. Declaracin de mtodos

Un mtodo es un conjunto de instrucciones a las que se les da un determinado
nombre de tal manera que sea posible ejecutarlas en cualquier momento sin
tenerlas que reescribir sino usando slo su nombre. A estas instrucciones se les
denomina cuerpo del mtodo, y a su ejecucin a travs de su nombre se le
denomina llamada al mtodo.

La ejecucin de las instrucciones de un mtodo puede producir como resultado un
objeto de cualquier tipo. A este objeto se le llama valor de retorno del mtodo y es
completamente opcional, pudindose escribir mtodos que no devuelvan ninguno.

La ejecucin de las instrucciones de un mtodo puede depender del valor de unas
variables especiales denominadas parmetros del mtodo, de manera que en
funcin del valor que se d a estas variables en cada llamada la ejecucin del
mtodo se pueda realizar de una u otra forma y podr producir uno u otro valor de
retorno.

100

Al conjunto formado por el nombre de un mtodo y el nmero y tipo de sus
parmetros se le conoce como firma del mtodo. La firma de un mtodo es lo que
verdaderamente lo identifica, de modo que es posible definir en un mismo tipo
varios mtodos con idntico nombre siempre y cuando tengan distintos
parmetros. Cuando esto ocurre se dice que el mtodo est sobrecargado.

VI.2. Mtodos de clase

La sintaxis:
acceso static tipo NombreDelMtodo ([Lista de Argumentos]) {
Declaracin de variables del mtodo
Sentencias del mtodo
[return tipo;]

Donde:

acceso Cada mtodo tiene asociado un tipo que se utiliza para controlar el
acceso al mtodo. Entre estos se encuentran:

public Este mtodo pblico se puede llamar de cualquier cdigo que
tenga acceso a la clase.
private Este mtodo privado solo puede ser llamado desde otros
mtodos dentro de la clase en que se defini el mtodo
privado.
protected Este mtodo protegido se puede llamar desde otros mtodos
de la clase en que el mtodo est definido y por cualquier
otro mtodo de las clases que heredan de la clase en que
est definido el mtodo. Tambin est disponible en
cualquier objeto de las clases pertenecientes al mismo
paquete en donde est definida la clase.
defecto Si no especifica ningn tipo de acceso, se utiliza el acceso
por defecto, esto significa que el mtodo es accesible a todas
las clases contenidas en el mismo paquete, pero no est
accesible fuera de ese paquete.
static Declara el mtodo como mtodo de la clase y no como mtodo del
objeto (no hereda el mtodo).

101

Nota: Un mtodo declarado como static solo puede ser llamado por otro
mtodo static y hacer referencia a variables static.

tipo Es el tipo de datos que regresara el mtodo. Si se estipula un tipo de
dato void indica el mtodo no regresa ningn valor (void indica ausencia
de valor). Dentro del mtodo para retornar el valor se utiliza la palabra
reservada return y posteriormente el valor, si el tipo de dato del mtodo
se declara void no es necesario utilizar la sentencia return.

NombreDelMtodo Es el nombre que distingue al mtodo y debe estar formado
por un identificador.
Lista de Argumentos Son los valores que se pasarn al mtodo para que realice
su tarea. Para cada argumento se tiene que declarar su tipo
de dato. Por ejemplo, el siguiente mtodo se llama
suma2Numeros, recibe como argumento dos valores tipo
long y regresa un valor long con la suma de los valores que
recibe como parmetro.

public static long suma2Numeros( long a, long b ) {
return (a + b);
}
Llamadas a mtodos (mensajes)

Los objetos interactan envindose mensajes unos a otros. Tras la recepcin de
un mensaje el objeto actuar. La accin puede ser el envo de otros mensajes, el
cambio de su estado, o la ejecucin de cualquier otra tarea que se requiera que
haga el objeto.

Tipos de mtodos

Un mtodo es una abstraccin de una operacin que puede hacer o realizarse con
un objeto. Una clase puede declarar cualquier nmero de mtodos que lleven a
cabo operaciones de lo ms variado con los objetos.

Los mtodos se clasifican en dos grupos: los mtodos de instancia y los mtodos
de clase.

Para acceder a las variables o mtodos de clase se utiliza el operador punto (.).

nombreClase.nombreVarClase;
nombreClase.nombreMetodoClase();


102








VI.3. Mtodos de instancia

Los mtodos de instancia o variables de instancia, los adquieren los objetos al ser
instanciados (creados). Para declarar un mtodo de instancia se declara sin la
palabra reservada static:

acceso tipo nombreMetodoInstancia (Lista de Argumentos) {
103

Declaracin de variables del mtodo
Sentencias del mtodo
[return tipo;]

Para acceder a las variables o mtodos de instancia se utiliza el operador punto
(.).

Objeto.nombreVarInstancia;
Objeto.nombreMetodoInstancia();






104



Forma de pasar argumentos.

Los argumentos son los valores que se pasan al mtodo para que realice un
proceso o tarea y el mtodo recibe estos argumentos en los parmetros
designados (variables).


En el paso de parmetros a funciones hay dos aproximaciones clsicas: el paso
por valor y paso por referencia.


- Por valor: En el paso por valor se realiza una copia de los valores que
se pasan, trabajando dentro del mtodo con la copia. Es por ello que
cualquier cambio que sufran dentro, no repercute fuera del mtodo.


- Por referencia: En el paso por referencia no se realiza dicha copia, por lo
que las modificaciones de dentro de los mtodos afectan a los parmetros y
esos cambios permanecen al final del mtodo.


En Java el paso por parmetro es por valor, aunque los efectos son de paso por
referencia cuando los argumentos son objetos. Cmo sucede eso? Pues es muy
fcil, si un mtodo tiene como argumento un tipo primitivo (int, float, etc...), en Java
se realiza una copia para la funcin y cualquier cambio a dicho argumento no
afecta a la variable original. Este paso de parmetros en Java est orientado a
utilizar el valor de la variable para otros clculos.

En el caso de los objetos es distinto. En realidad lo que sucede es que en Java
siempre tenemos referencias a los objetos. Por eso al pasar a un mtodo como
argumento un objeto, pasamos la referencia al mismo, es decir, aunque se hace
una copia para el paso por valor, como lo que se copia es una referencia, los
cambios al objeto referenciado s son visibles y afectan fuera de mtodo.

La nica excepcin es la clase String , cuyos objetos no son mutables. Cualquier
modificacin de un objeto String lleva aparejada la creacin de una nueva
105

instancia del objeto. Si deseamos el mismo comportamiento para el paso de
parmetros del resto de objetos, tenemos que recurrir al objeto StringBuffer.

En el siguiente programa se declaran 2 variables, la primera es un arreglo de
caracteres (char) y el segundo es un dato tipo int, dentro del mtodo main se
despliegan los datos antes de enviar las variables como parmetros al mtodo
Cambia. En el mtodo Cambia, se modifica el arreglo en el subndice 2 por el
carcter @ y se multiplica el valor de la variable int por 4. Cuando termina de
ejecutar el mtodo Cambia se vuelven a desplegar las variables y se puede
observar que el arreglo cambi en el subndice 2 debido a que fue enviado como
por referencia, sin embargo la variable tipo int no sufri cambios, debido a que se
mando por valor.






106



Devolver un valor desde un mtodo.

En Java es imprescindible que a la hora de la declaracin de un mtodo, se
indique el tipo de dato que ha de devolver. Si no devuelve ningn valor, se indicar
el tipo void como retorno.

Los mtodos pueden devolver una variable u objeto, bien sea por valor (se
devuelve una copia), por puntero o por referencia. Java no soporta punteros, as
que no puede devolver nada por puntero. Todos los tipos primitivos en Java se
devuelven por valor y todos los objetos se devuelven por referencia. El retorno de
la referencia a un objeto en Java es similar a devolver un puntero a un objeto
situado en memoria dinmica en C++, excepto que la sintaxis es mucho ms
simple en Java, en donde el item que se devuelve es la direccin de la posicin en
memoria dinmica donde se encuentra almacenado el objeto.

Para devolver un valor se utiliza la palabra clave return. La palabra clave return
va seguida de una expresin que ser evaluada para saber el valor de retorno.
Esta expresin puede ser compleja o puede ser simplemente el nombre de un
objeto, una variable de tipo primitivo o una constante.



107

Ejercicio 6.1: El siguiente programa lee un valor en grados Celsius y por medio de
un mtodo llamado convierteAFahrenheit convierte los grados Celsius a grados
Fahrenheit.
















108

Ejercicio 6.2: El siguiente programa lee una cantidad en metros y por medio de
los mtodos conversionAPies y converionApulgadas cambia el valor en metros a
pies y a pulgadas (donde 1 metro = 39.37 pulgadas y 1 pie = 12 pulgadas)














109

Ejercicio 6.3: Una tonelada mtrica equivale a 35,273.92 onzas. El siguiente
programa lee el peso de un paquete de cereal para el desayuno en onzas y
mediante el mtodo calculaCajas determina cuantas cajas se pueden llenar con
una tonelada mtrica de cereal.




















110

Ejercicio 6.4: El siguiente programa lee tres calificaciones y mediante un mtodo
estatusPromedio determina si el alumno esta Aprobado o Reprobado.








111

Ejercicio 6.5: El siguiente programa lee un nmero entero y mediante el mtodo
NegativoCeroPositivo regrese Positivo si el nmero es positivo, Negativo si fue
negativo y Cero si fue cero.





Producto de Aprendizaje VI: Elabore los siguientes ejercicios utilizando
mtodos de clase y mtodos de instancia.

1. Escriba un programa que dado el total a pagar de la compra de X productos
y la cantidad de dinero entregada, calcule el vuelto que hay que dar al
cliente.

112

2. Escriba un programa que mediante un mtodo determine si una cadena es
palndromo (un palndromo es una palabra que se lee igual en sentido
directo como inverso, por ejemplo radar).

3. Escriba un programa que lea dos enteros positivos n y b que llame a un
mtodo cambiarBase para calcular y visualizar la representacin del
nmero n en la base b.

4. Escriba un programa que mediante un mtodo que tome como argumentos
las longitudes de los tres lados de un triangulo (a, b y c), devuelva el rea
del triangulo.

2
) )( )( (
c b a
p donde
c p b p a p p Area
+ +
=
=


5. Una empresa de autobuses hace viajes desde la Capital del Pas hacia
ciudades del interior, para lo cual dispone de dos tipos de vehculos,
pequeos y grandes, con capacidad de 20 y 60 pasajeros respectivamente.

Cada vez que parte un autobs del terminal de la ciudad Capital es anotado
el tipo de vehculo (Pequeo (P) o Grande (G)) y el nmero de pasajeros
que transporta.
La empresa desea un reporte al final del da con la informacin siguiente:
Para cada viaje:

a. El tipo de autobs:
b. La cantidad de pasajeros.
c. El mensaje "Ganancia" si en el autobs viaja un nmero de pasajeros
igual o mayor que el 50% de su capacidad, y "Prdida" en caso
contrario.

6. Elabore un programa que lea dos nmeros y mediante un mtodo
determine si un numero divide al otro exactamente regresando true, en
caso contrario regrese false.

7. Escriba un programa que mediante un mtodo determine si una cadena es
palndromo (un palndromo es una palabra que se lee igual en sentido
directo como inverso, por ejemplo radar).

113

8. Escriba un programa que lea dos enteros positivos n y b que llame a un
mtodo cambiarBase para calcular y visualizar la representacin del
nmero n en la base b.

9. Escriba un programa que tenga un mtodo inverso que se le enve un
argumento numrico y regrese su inverso, por ejemplo 1847, el inverso es
7481.

10. Escriba un programa que lea un valor x != 0 y por medio de mtodo regrese
el valor de la siguiente expresin:

|
|
.
|

\
|
1
1
435 . 1
5
x
e
x


11. Escriba un programa que mediante un mtodo que reciba dos argumentos x
y n devuelva el siguiente valor:

0
1 1
0
2
1 1
2
<

+
>=
+
+
+
+
x si
n
x
n
x
x si
x
x
n
x
x
n n
n n

Вам также может понравиться