Está en la página 1de 11

Paradigmas de la Programación

1 Indice

Generalidades

Desarrollo Temático

Paradigmas de la Programación / Autor: Claudia Álvarez, Francisco Chaves y Daniel Santamaría


enlace1

   

4. Herencia   Contenido
• PARADIGMAS  DE  LA  PROGRAMACIÓN   4.1. Clasificación  jerárquica  
4.2. Herencia  en  Java  
  4.3. Polimorfismo  
4.3.1. Polimorfismo  de  sobrescritura  
  4.3.2. Polimorfismo  de  sobrecarga  
Índice     Anterior
   
Introducción    
1. Paradigmas  de  programación   Introducción  
1.1. Programación  imperativa   Siguiente
1.2. Programación  funcional   Cuando   hablamos   de   paradigmas   de   la   programación   nos   referimos   a   mecanismos,  
lineamientos   o,   en   general,   estrategias   orientadas   a   definir   la   solución   de   un   problema   de  
1.3. Programación  lógica  
acuerdo  a  sus  características.  
1.4. Programación  por  restricciones  
1.5. Programación  orientada  por  eventos   La   existencia   de   múltiples   paradigmas   de   programación   se   debe   a   que   no   es   posible   abordar  
1.6. Programación  orientada  por  eventos   cualquier   problema   con   base   en   una   misma   estrategia.   Múltiples   visiones   de   esta   situación  
han   llevado   a   definir   los   paradigmas   que   veremos   a   lo   largo   del   curso,   brindando   especial  
1.7. Programación  orientada  a  aspectos  
atención  al  paradigma  de  programación  orientado  a  objetos.  
1.8. En  resumen  
1.9. Para  tener  en  cuenta   En   los   últimos   años,   Java   ha   sido   utilizado   ampliamente   en   la   enseñanza   de   programación  
2. Clase   orientada   a   objetos   y   esto   se   debe   a   varios   motivos.   Primero,     Java   tiene   diferentes  
2.1. Declaración  de  una  clase   características   que   facilitan   la   enseñanza,   ya   sea   porque   tiene   una   definición   relativamente  
2.2. Variables,  constructores    y  métodos   clara   como   su   modelo   de   memoria   robusto.   Otro   motivo   es   que   Java   se   ha   vuelto   muy  
2.2.1. Variables   importante  a  nivel  comercial.  
2.2.2. Constructores   Esta   cartilla   enseña   los   conceptos   básicos   y   avanzados   del   paradigma   de   programación  
2.2.3. Métodos   orientada  a  objetos.  De  igual  forma,  acompaña  al  estudiante  por  el  camino  del  aprendizaje  
2.2.4. Objetos   desde  los  primeros  pasos  hasta  los  conceptos  más  avanzados.  
2.3. Miembros  de  instancia   Esperamos   que   a   través   de   las   unidades   se   transmitan   todos   los   conceptos   de   una   forma  
2.4. Interacción  entre  objetos   clara.      
3. Lenguaje  unificado  de  modelado  UML    
3.1. Diagrama  de  clases    
3.1.1. Clase   Metodología  
3.1.2. Atributos    
3.1.3. Métodos  
3.1.4. Relaciones  entre  clases  –  Dirección  de  las  relaciones   Las   cartillas   abordan   los   temas   varias   veces,   ya   sea   dentro   de   una   misma   unidad   o   a   largo   de  
3.1.5. Relaciones  entre  clases  –  Uso   las   unidades.   Los   conceptos   se   introducen   generalmente   con   un   nivel   de   detalle   para   su  
3.1.6. Relaciones  entre  clases  –  Agregación  y  composición   comprensión,   después   se   revisan   en   contextos   diferentes,   brindando   al   estudiante   la  
3.1.7. Relaciones  entre  clases  –  Herencia   posibilidad  de  comprender  a  profundidad  los  conceptos.  
3.1.8. Interfaces  y  clases  –  Implementación    

   
2   [ POLITÉCNICO GANCOLOMBIANO] [ PARADIGMAS DE LA PROGRAMACIÓN ] 3
   

Mapa  conceptual   Semana  2   Contenido


  Lectura  2  
  Diagrama  de  clases  
Clase  
Atributos  
Métodos   Anterior
UML  
Relaciones  entre  clases  (Dirección  de  las  
relaciones,  uso,  agregación  y  
composición,  herencia)  
Interfaces  y  clases  
Siguiente
Clasificación  jerárquica  
Herencia  en  Java  
Herencia   Polimorfismo  
Polimorfismo  de  sobreescritura  
Polimorfismo  de  sobrecarga  
 
   
  Objetivo  general  
   
  a. Identificar   características   y   diferencias   entre   los   diferentes   paradigmas   de  
  programación.  
Unidad1   b. Conocer   y   comprender   los   conceptos   relacionados   con   programación   orientada   a  
Semana  1   objetos.  
c. Identificar   y   comprender   la   representación   de   clases   y   objetos   propuestos   por   el  
Lectura  1  
diagrama  de  clases  UML.  
Programación  imperativa  
d. Conocer  y  comprender  los  conceptos  de  herencia.  
Programación  funcional    
Programación  lógica    
Paradigmas  de  programación  
Programación  por  restricciones   Competencias  
Programación  orientada  por  eventos    
a. Comprender   las   diferencias   fundamentales   entre   los   paradigmas   de   programación,  
Programación  orientada  a  aspectos   reconociendo  las  ventajas  de  cada  modelo  y  su  utilidad  práctica.  
Declaración  de  una  clase   b. Implementar   el   modelado   de   un   problema   sencillo,   utilizando   todos   los   conceptos  
Variables   aprendidos  de  la  programación  orientada  a  objetos.  
Métodos    
Clases   Constructores    
Objetos    
Miembros  de  instancia    
Interacción  entre  objetos    
 

   
4   [ POLITÉCNICO GANCOLOMBIANO] [ PARADIGMAS DE LA PROGRAMACIÓN ] 5
enlace2

   

Desarrollo  temático   elegante  y  fiel  a  definiciones  matemáticas  concretas,  puesto  que  se  basa  en  la  definición  de   Contenido
Componente  Motivacional   funciones  y  de  conjuntos  de  datos  que  cumplen  criterios  estrictos,  los  cuales  presentan  un  
  formalismo  atractivo  para  representar  situaciones  basadas  en  definiciones  matemáticas.    
El  entendimiento  de  los  diferentes  tipos  de  paradigmas  de  programación  dota  al  estudiante  
de   herramientas   conceptuales,   para   escoger   el   paradigma   que   brinde   la   mejor   solución   al   La   utilización   de   este   paradigma   es   aplicable   a   problemas   que   se   definen   con   base   en  
problema  de  acuerdo  a  sus  características.   funciones,  que  pueden  ser  muchas  veces  recursivas  como  es  el  caso  de  la  función  factorial,  la  
cual   cuenta   con   una   definición   que   encaja   perfectamente   en   este   paradigma.   En   la   Anterior
Recomendaciones  académicas   programación   funcional   no   existen   ciclos;   por   lo   tanto,   las   iteraciones   deberán   ser  
  representadas  como  funciones  recursivas  que  se  definen  usando  un  caso  base  y  una  relación  
El  modulo  hará  uso  de  múltiples  recursos  en  línea.  La  recomendación  fundamental  es  dedicar   de  recurrencia.  Dado  que  la  definición  de  este  tipo  de  estructuras  en  algunos  casos  es  más  
el  tiempo  suficiente  para  poder  apropiar  los  conceptos  de  la  asignatura.   clara  y  más  sencilla  en  programación  imperativa,  es  necesario  contar  con  un  buen  criterio  al  
  definir   qué   tipo   de   problemas   o   situaciones   deseamos   resolver   o   representar   con   este  
Desarrollo  de  cada  una  de  las  unidades  temáticas   paradigma.   Siguiente
1. Paradigmas  de  programación    
1.3. Programación  lógica  
1.1. Programación  imperativa  
También   es   posible   resolver   situaciones   basadas   en   la   toma   de   decisiones   a   partir   de   un  
Al   hablar   de   programación   de   computadores,   hablamos   inicialmente   de   solucionar   un  
conjunto  de  predicados  lógicos.  Esta  situación  se  ve  en  muchos  casos  relacionados  con  toma  
problema   de   comunicación   entre   seres   humanos   y   máquinas,   teniendo   en   cuenta   la     gran  
de  decisiones  o  en  inteligencia  artificial,  donde  se  alimenta  una  base  de  conocimiento  a  partir  
capacidad  de  procesamiento  y  almacenamiento  de  información  de  estas.  Tal  brecha  natural  
de   la   cual   posteriormente   es   posible   generar   nueva   información,   tomar   decisiones   o   emitir  
de   comunicación   se   rompe   a   través   de   la   definición   de   lenguajes   de   programación   que  
algún  juicio  concreto.  
representan   un   punto   intermedio   entre   nuestro   idioma   y   el   que   hablan   los   computadores.  
Estos   lenguajes   no   son   difíciles   de   aprender,   ya   que   se   basan   en   elementos   de   nuestro   1.4. Programación  por  restricciones  
lenguaje  y  son  fáciles  de  traducir  al  lenguaje  que  entienden  los  computadores.    
Este   paradigma   se   basa   en   la   definición   ya   no   de   una   serie   de   pasos   para   hallar   una   solución,  
Las   anteriores   definiciones   se   basan   en   un   paradigma   de   programación   imperativo.   sino   de   un   conjunto   de   condiciones   que   debe   cumplir   la   solución   de   un   problema.   Su  
Hablamos   en   este   caso   de   la   necesidad   de   dar   órdenes,   en   otras   palabras,   de   decirle   a   un   aplicación  es  similar  a  la  de  la  programación  lógica,  ya  que  se  basa  en  la  generación  de  nueva  
computador   qué   queremos   que   haga   por   nosotros.   Los   paradigmas   de   programación   información   a   partir   de   una   basa   de   conocimiento.   Por   ejemplo,   se   quieren   hallar   las  
estructurada   y   programación   orientada   a   objetos   se   basan   en   programación   imperativa,   soluciones  de  la  siguiente  ecuación:  
dado   que,   el   sentido   de   escribir   programas   es   utilizar   los   recursos   de   un   computador   para  
solucionar  un  problema  o  para  representar  una  situación  particular.     3x4  +  8y2  +  2z3  =  54,    

La   diferencia   que   define   la   programación   orientada   a   objetos   es   que   parte   de   un   proceso   de   Teniendo  en  cuenta  que  (restricciones):  
modelado   del   mundo   real,   que   permite   establecer   la   lógica   de   los   programas   que   escribimos  
de  una  forma  más  natural  y  orientada  directamente  a  la  solución  del  problema.  De  acuerdo   • x  debe  ser  par.  
con   esa   situación,   es   el   paradigma   más   usado   actualmente   y,   por   lo   tanto,   dedicaremos   la   • y  debe  estar  en  el  rango  [10,20].  
mayor  parte  del  tiempo  a  conocerlo.     • z  debe  ser  mayor  que  4.  
  La  programación  por  restricciones  permite  establecer  soluciones  (si  existen)  a  este  tipo  de  
1.2. Programación  funcional   situaciones.  Es  muy  útil  para  la  búsqueda  de  información  o  para  problemas  de  optimización  
que  se  basan  en  este  tipo  de  información.  
No   todo   es   imperativo.   Es   posible   detallar   un   programa   a   partir   de   definiciones   de   funciones  
 
como  lo  propone  la  programación  funcional.  Este  paradigma  ofrece  la  posibilidad,  más  que  
pensar   en   la   solución   del   problema,   de   presentar   estrategias   para   hacerlo   de   forma   clara,  

   
6   [ POLITÉCNICO GANCOLOMBIANO] [ PARADIGMAS DE LA PROGRAMACIÓN ] 7
   

  permite   que   los   modelos   diseñados   sean   más   claros,   modulares,   más   flexibles   y   permitan   Contenido
plasmar  de  mejor  forma  características  deseables  de  un  sistema  de  información.  
1.5. Programación  orientada  por  eventos  
En  Resumen  
Se  puede  considerar  a  la  programación  orientada  por  eventos  un  paradigma  que  se  basa  en  
programación   imperativa,   pero   que   parte   ya   no   de   un   conjunto   de   tareas,   sino   de   un   Como  vemos,  diversos  paradigmas  de  programación  se  han  resultado  al  abordar  de  formas  
conjunto  de  eventos  que  pueden  suceder  en  el  mundo  real.  Este  paradigma  se  usa  al  trabajar   distintas   los   problemas   o   situaciones   que   queremos   analizar.   Lo   interesante   es   poder  
Anterior
con  dispositivos  que  generan  eventos  con  base  en  el  uso  de  sensores.  El  trabajo  entonces  se   identificar  la  utilidad  que  tiene  cada  paradigma,  saber  cuándo  es  adecuado,  cuándo  es  más  
enfoca  en  reaccionar  a  esos  eventos  de  forma  adecuada.  Por  ejemplo,  si  un  robot  cuenta  con   sencillo   y   cuándo   es   más   claro   representar   problemas   que   se   presentan   en   nuestro   mundo   a  
tres  sensores  que  le  permiten  ver  marcas  negras,  la  lógica  diseñada  debería  definir  qué  hacer   partir   de   las   reglas,   mecanismos   y   lenguajes.   A   lo   largo   de   este   curso   hablaremos   de   los  
en  casos  en  los  que  un  sensor  o  un  conjunto  de  sensores  tengan  un  estado  particular.  ¿Qué   paradigmas   más   importantes   y   que   tienen   mayor   aplicación   en   la   actualidad,   teniendo   en  
hacer  si  los  tres  sensores  encuentran  marcas  negras?,  ¿qué  hacer  si  solo  el  sensor  del  medio   cuenta   otros   menos   conocidos,   que   sin   embargo   muestran   grandes   ventajas   a   la   hora   de  
lo  hace?   resolver  problemas  particulares.   Siguiente
1.6. Programación  orientada  a  agentes   Para  tener  en  cuenta  

En  este  caso  hablamos  de  la  definición  de  estrategias  para  la  solución  de  problemas  con  base   • En  general,  los  paradigmas  definen  estrategias  y  mecanismos  para  ayudar  a  solucionar  un  
en   la   identificación   y   definición   de   agentes,   que   son   entidades   independientes   que   con   problema.  Teniendo  esto  en  cuenta,  es  posible  trabajar  con  base  en  un  paradigma,  pero  
capacidad   de   percibir   cosas   sencillas   del   ambiente   y   tomar   decisiones   de   acuerdo   con   dichas   usando  recursos  o  lenguajes  definidos  por  otro.  Un  ejemplo  de  esto  puede  ser  la  solución  
percepciones.  Cada  agente  cuenta  entonces  con  un  rol  determinado  para  lograr  un  objetivo   de   problemas   lógicos   que   cuentan   con   una   representación   basada   en   restricciones.   Otro  
relacionadas  con  el  desarrollo  de  una  serie  de  actividades  o  instrucciones  de  acuerdo  con  su   ejemplo   es   trabajar   bajo   un   esquema   orientado   a   aspectos   o   a   eventos   en   un   lenguaje  
estado,  determinado  por  lo  que  conoce  del  ambiente.     orientado  a  objetos.  
 
Este  paradigma  es  interesante,  ya  que  fomenta  la  división  de  tareas  a  través  de  la  definición   • Teniendo   en   cuenta   lo   anterior,   se   han   hecho   implementaciones   de   componentes   que  
de   roles   y   actividades   que   debe   cumplir   un   equipo   de   forma   colaborativa   para   lograr   un   facilitan   la   solución   de   problemas   bajo   un   paradigma   determinado   y   que   pueden   ser  
objetivo  común.  Es  útil  además  porque  se  basa  en  la  definición  de  roles  como  sucede  en  el   incorporados   en   programación   orientada   a   objetos,   teniendo   en   cuenta   que   este   es   el  
mundo  real.   paradigma  más  usado  por  sus  grandes  ventajas.  
 
1.7. Programación  orientada  a  aspectos  
• No   hay   una   estrategia   única   para   solucionar   un   problema;   la   idea   es   conocer   cuáles  
Este   paradigma   de   programación   es   uno   de   los   más   recientes   que   se   han   propuesto   en   existen  y  cuál  es  la  más  adecuada  para  llegar  a  la  solución  o  a  la  representación  adecuada  
modelos   orientados   a   objetos   aplicados   al   diseño   a   gran   escala,   que   responden   a   la   de   una   situación.   Si   conocemos   claramente   las   características   de   los   paradigmas   más  
articulación   de   procesos   de   gestión   de   información   del   mundo   real,   con   el   objetivo   de   lograr   importantes,  podremos  verlos  entonces  como  herramientas  que  nos  ayudan  en  nuestro  
mejores  resultados  en  términos  de  modularidad  y  claridad  conceptual.   trabajo  al  enfrentarnos  a  situaciones  específicas.  
 
La   implementación   de   programas   basados   en   este   paradigma   se   fundamenta   en   mejorar   • Dado   que   los   paradigmas   de   la   programación   han   partido   de   la   identificación   y  
modelos   de   programación   orientada   a   objetos,   aislando   la   lógica   del   negocio 1  de   la   formalización   de   estrategias,   y   formas   de   representación   de   problemas   y   situaciones,  
funcionalidad,   orientada   a   proveer   otras   características   secundarias   como   seguridad,   estos   representan   un   campo   de   la   Ingeniería   de   Sistemas   en   constante   cambio,   que  
confiabilidad  o  verificación  de  condiciones  que  debe  cumplir  la  información  manejada.  Esto   demanda  de  nosotros  como  profesionales  un  trabajo  de  lectura,  revisión  y  actualización  
constante  en  términos  de  poder  conocer  nuevas  formas  para  abordar  las  situaciones  que  
                                                                                                                queremos  resolver.  
1
 La   lógica   del   negocio   es   un   término   manejado   en   procesos   de   desarrollo   para   referirnos   a   la   lógica   que   define    
la  solución  al  problema  esencial  o  la  lógica  que  define  el  modelo  del  problema,  alejado  de  cosas  importantes,  
pero  secundarias,  como  por  ejemplo,  la  forma  en  que  se  requiere  mostrar  la  información,  la  forma  de  verificar    
su  fiabilidad  y  la  forma  de  hacer  que  la  información  persista.  

   
8   [ POLITÉCNICO GANCOLOMBIANO] [ PARADIGMAS DE LA PROGRAMACIÓN ] 9
   

  cual  debe  estar  en  mayúscula  (Pintura,  Carro,  Parqueadero).  Si  existen  varias  palabras  que   Contenido
conforman  el  identificador  o  nombre  de  la  clase  deben  seguir  la  misma  regla,  todas  las  letras  
  en  minúscula  exceptuando  la  primera  letra,  la  cual  debe  estar  en  mayúscula.  Generalmente  
2. Clase   debe  ser  un  sustantivo  (ParqueaderoNacional,  LibreriaNacional).    
Para  aclarar  estas  nociones  abstractas,  utilizaremos  un  ejemplo  y  un  conjunto  de  preguntas.  
La  abstracción  nos  permite  manejar  la  complejidad  de  la  programación  orientada  a  objetos,   Supongamos    que  se  desea  modelar  una  guardería  canina:  
Anterior
gracias   a   que   nos   muestra   o   revela   las   propiedades   y   comportamientos   esenciales   de   un  
Una  guardería  canina  cuida  gran  variedad  de  perros  y  desean  una  aplicación  que  se  encargue  
objeto   que   se   diferencia   de   otros   objetos.   Como   podrán   entender   el   trabajo   que   más  
de  gestionar  la  información  de  sus  perros.  Cada  perro  tiene  un  nombre,  una  raza  y  una  edad.  
esfuerzo  requiere  es  encontrar  la  abstracción  correcta.    
Una  categoría  de  objetos  con  la  que  tendrá  que  trabajar  es  Perro  (Entidad),  la  cual  tiene  un  
La  esencia  de  la  programación  orientada  a  objetos  es  el  modelado  que  se  lleva  a  cabo  usando  
nombre,   una   raza   y   una   edad   (atributos),   mientras   que   sus   comportamientos   podrían   ser  
clases   y   objetos.   Una   clase   describe   un   conjunto   de   objetos   con   propiedades   y   Siguiente
(comer,  caminar,  ladrar,  dormir,  entre  otros).    
comportamientos  idénticos  que  denotan  una  categoría  de  objetos.  
Responda  las  siguientes  preguntas  pensando  en  el  contexto  de  la  guardería  canina:  
Definición  de  Clase  
Existen  diferentes  definiciones  para  el  concepto  de  Clase,  por  esta  razón,  nosotros  vamos  a   1. ¿Qué  es  un  Perro  en  nuestro  contexto?,  ¿es  una  clase  o  un  objeto?  
utilizar   la   definición   que   consideramos   más   acertada:   Una  clase   es   un   modelo   o   plantilla   que   2. ¿Cuál  es  la  raza  del  perro?    
representa   una   categoría   de   objetos   del   mundo   real,   donde   las   variables   son   los   atributos  
que   representan   el   estado   del   objeto   y     los   métodos     definen   su   comportamiento   (las   Para   poder   responder   a   la   primera   pregunta,   tendremos   que   pensar   el   porqué,   en   este  
variables  y  los  métodos  en  una  clase  son  llamados  miembros).     contexto   en   particular,   “Perro”   hace   referencia   a   la   clase   Perro.   Esto   es   debido   a   que  
  estamos  hablando  de  los  perros    en  general    y  no  en  uno    en  particular.    De  esta  forma,  la  
clase   Perro   describe   el   conjunto   de   perros     de   la   guardería   canina   que   tienen     atributos   y  
Nuestro   mundo   está   lleno   de   objetos:   un   coche,   un   banco,   una   cuenta   bancaria,   entre   otros,   comportamientos  idénticos,  denotando  la  categoría  Perro.  
son   objetos   del   mundo   real.   Cada   uno   de   ellos   tienen   dos   características   que   los   definen:  
propiedades  y  comportamiento.  Si  observamos  una  gata,  esta  tiene  propiedades  (raza,  edad,   Mientras  que  la  única  forma  de  responder  de  manera  correcta  la  pregunta  número  dos    es  
sexo,  color,  nombre,  entre  otros),  y  comportamientos  (comer,  caminar,  maullar,  saltar,  entre   conocer  el  perro  específico  del  que  hablamos  (objeto).  Si  conocemos  el  perro  en  particular  
otros).   También   los   carros   tienen   propiedades   (marca,   placa,   color,   entre   otros)   y   se  podría  responder  de  qué  raza  es  el  perro.  
comportamientos  (frenar,  acelerar,  entre  otros).    
En   este   texto,   cuando   se   haga   referencia   a   un   objeto   en   particular,   hablaremos   de   una  
 Las  propiedades  de  un  objeto  de  una  clase  también  son  llamadas  atributos  y  son  definidas   instancia,    ya  que  un  objeto  es  una  instancia  de  una  clase.  
como   campos   en   Java.   Un   campo   en   la   definición   de   una   clase   es   una   variable   que   puede  
almacenar   un   valor   que   representa   el   estado   de   una   en   propiedad   particular.   Los   2.1. Declaración  de  una  clase  
comportamientos   de   un   objeto   de   una   clase   también   se   conocen   como   operacione,   y   son  
Una  clase  se  divide  en  dos  secciones  principales:  la  sección  externa  y  la  sección  interna  (ver  
definidas  usando  métodos  en  Java.    
figura  1).    
Las  variables  y  los  métodos  en  la  definición  de  una  clase  se  llaman  miembros.  De  ahora  en  
1. La  sección  externa  es  la  que  da  nombre  a  la  clase  y  contiene  la  sección  interna.  
adelante  cuando  se  haga  referencia  a  las  propiedades  y  comportamientos  de  un  objeto,  se  
utilizarán  los  términos    atributos  y  método  respectivamente.     2. La  sección  interna  contiene    los  miembros  de  la  clase.  
   

Convención  de  nombramiento  para  las  clases    


  SeccionExterna  
Las   convenciones   de   nombramiento   son   muy   sencillas.   Todas   las   letras   que   conforman   el  
{  
nombre  o  identificador  de  la  clase  deben  estar  en  minúscula  exceptuando  la  primera  letra,  la  
  SeccionInterna  
}  

   
10   [ POLITÉCNICO GANCOLOMBIANO] [ PARADIGMAS DE LA PROGRAMACIÓN ] 11
   

  • Nombre,  almacena  una  cadena  de  caracteres  con  el  nombre  del  perro.   Contenido
Figura  1.  Secciones  de  una  clase:  Externa  e  Interna   • Raza,  almacena  una  cadena  de  caracteres  con  la  raza  del  perro.  
 
• Edad,  almacena  un  número  entero  con  los  meses  de  vida  del  perro.  
En  el  ejemplo  de  la  clase  Perro:  
Si   lo   vemos   más   formal,   el   conjunto   de   atributos   pertenece   al   producto   cartesiano   de   sus  
  tipos  de  datos.  
public  class  Perro   Anterior
  {   Además,  tiene  un  método  que  implementa  el  comportamiento  para  mostrar  la  información  
                 SeccionInterna       esencial  del  perro:  
   }  
• Mostrar  Información.  Muestra  la  información  del  Perro.  
Figura  2.  Secciones  de  la  clase  Perro:  externa  
2.2.1. Variables   Siguiente
En  la  sección  interna  de  la  clase  Perro  se  definirán,  primero,  las  variables  miembro,  después,  
los  constructores  y,  por  último,  los  métodos  miembro  de  la  clase  (ver  figura  3).  En  este  texto   Las  variables  se  declaran  en  un  espacio  de  memoria,  con  un  nombre  que  está  asociado  a  dicho  
utilizaremos  este  estilo,  debido  a  que  resulta  más  claro  y  más  fácil  de  comprender  las  clases:   espacio  y  un  tipo.  Ese  espacio  puede  almacenar  un  valor  que  puede  cambiar  a  lo  largo  del  
tiempo,  es  por  esto  que  se  le  conoce  por  el  nombre  de  variable.  
  public  class  Perro   Las   variables   se   declaran   especificando   su   modificador   de   acceso   (por   ahora   siempre   será  
  {   público),   el   tipo   y   su     nombre   (identificador).   Su   objetivo   principal   es   almacenar   un   valor   o  
    Variables   estado.  
 
Constructores  
Métodos   El   tipo     de   una   variable   determina   el   valor   que   se   puede   asignar   y   las   operaciones   que   se  
 }     pueden   realizar   con   ellas.   El   tipo   puede   ser   primitivo   (boolean,   byte,   char,   short,   int,   long,  
Figura  3.  Secciones  de  la  clase  Perro:  externa  e  interna   float  y  double)  o  no  primitivo  (Referencia  (Clase)).  

Ejercicio  2.1.  Escriba  la  sección  externa  para  las  clases  Carro  y  Parqueadero.  No  se  preocupe   Cuando   se   crea   un   objeto,   este   contiene   copias   de   todas   las   variables   miembro   o   campos   de  
por  la  parte  interna.     la  clase.  Estas  variables  se  conocen  como  variables  de  instancia.    

Ejercicio  2.2.  Verifique  si  es  posible  modificar  la  parte  externa  de  la  clase  Perro  de  la  siguiente   Siguiendo  la  estructura  establecida,  se  definirán  los  variables  nombre,  raza  y  edad  en  la  clase  
forma:     perro.  Al  comienzo  de  la  sección  interna  como  se  puede  ver  en  el  código  1.  

public  class  Pintura  a  class  public  Pintura   Las  variables  nombre  y  raza  son  de  tipo  String  (tipo  no  primitivo).  Esto  indica  que  los  campos  
podrán   almacenar   cadena   de   caracteres,   lo   cual   es   grandioso,   debido   a   que   cuando   se   le  
 ¿Generó  algún  error  al  compilarlo?,  ¿entiende  el  mensaje  que  explica  el  error?     asigne  información  a  estas  variables  serán  textos.  

 Ejercicio   2.3.   ¿Es   posible   no   utilizar   la   palabra   public   en   la   declaración   de   la   clase?   ¿Si   es   La  variable  edad  es  de  tipo  int  (tipo  primitivo).  Esto  indica  que    almacenara  un  valor  entero.  
posible,  explique  el  porqué?    
  1. public  class  Perro  
class  Perro   2. {  
  3.   //Variables  
4.   //Nombre  del  perro  
2.2. Variables,  constructores    y  métodos   5.   public  String  nombre;  
  6.   //Raza  del  perro  
7.   public  String  raza;  
Recordemos   que   una   clase   se   define   a   través   de   sus   variables   (atributos)   y   métodos  
  8.   //Edad  en  meses  del  perro  
(comportamientos);  el  caso  de  la  guardería  canina  tiene  tres  variables:   9.   public  int  edad;  
10.   //Constructores  
  11.   //Métodos  
12. }  
 

   
12   [ POLITÉCNICO GANCOLOMBIANO] [ PARADIGMAS DE LA PROGRAMACIÓN ] 13
   

    Contenido
Código  1.    Sección  interna  (variables)   Este   constructor   tiene   tres   parámetros,   cada   uno   de   ellos   se   define   con   un   tipo   y   su  
identificador,   por   ejemplo,   el   parámetro   n   es   de   tipo   String   y   se   utiliza   para   inicializar   la  
En     Java   existen   convenciones   de   nombramiento   para   las   variables,   si   el   nombre   de   la   variable   de   instancia   nombre.   La   asignación   se   realiza   tomando   el   valor   del   parámetro   n   y  
variable  es  de  una  sola  palabra,  todas  las  letras  deben  estar  en  minúscula,  pero  si  contienen   copiándolo  en  la  variable  que  aparece  al  lado  izquierdo:  
más  de  una  palabra,  todas  las  letras  subsecuente  deben  están  en  minúsculas  excepto  por  la   Anterior
primera  de  cada  palabra,  ya  que  debe  comenzar  por  mayúscula.   nombre  =  n;  

2.2.2. Constructores   2.2.3. Métodos  


Los  constructores  de  una  clase    tienen  la  responsabilidad  de  inicializar  el  objeto  que  se  desea   Los   métodos   son   subrutinas   que   representan   una   lógica   que   determina   las   operaciones  
crear  en  un  estado  adecuado  para  que  pueda  ser  usado  una  vez  instanciado.  Las  variables  de   sobre   los   datos.   Ofrecen   dos   grandes   ventajas,   la   primera   es   que   permite   reutilizar   el   código   Siguiente
instancia  del  objeto  se  inicializan  en  el  constructor  (ver  código  2).  Algunas  veces  se  pueden   y  la  segunda  es  que  convierte  el  programa  en  módulos.  Gracias  a  estas  ventajas,  el  programa  
inicializar  con  valores  constantes,  sin  embargo,  no  es  recomendable  ya  que  todos  los  objetos  
mejora  su  mantenimiento  y  las  probabilidades  de  prevenir  errores.  
no  tendrán  siempre  el  mismo  estado.  
 
1. public  class  Perro  
  2. {  
1. public  class  Perro   3.   //Variables  
2. {   4.   //Nombre  del  perro  
3.   //Variables   5.   public  String  nombre;  
4.   //Nombre  del  perro   6.   //Raza  del  perro  
5.   public  String  nombre;   7.   public  String  raza;  
6.   //Raza  del  perro   8.   //Edad  en  meses  del  perro  
7.   public  String  raza;   9.   public  int  edad;  
8.   //Edad  en  meses  del  perro   10.   //Constructor  
9.   public  int  edad;   11.    
10.   //Constructor   12.   public  Perro(String  n,  String  r,  int  e)  
11.     13.   {  
12.   public  Perro(String  n,  String  r,  int  e)   14.     this.nombre  =  n;  
13.   {   15.     this.raza  =  r;  
14.     nombre  =  n;   16.     this.edad  =  e;  
15.     raza  =  r;   17.      
16.     edad  =  e;   18.   }  
17.       19.   //Métodos  
18.   }   20.   /**  
19.   //Métodos   21.    *  Imprime  la  información  completa  del  Perro  por  consola    
20. }   22.    */  
  23.   public  void  mostrarInformacion()  
24.   {  
25.     System.out.println("Perro  [  Nombre:"+nombre+",  raza:"+raza+",  edad:"+edad);  
26.   }  
Código  2.    Sección  interna  (constructores)   27. }  
 
 
 
Los  valores  para  inicializar  cada  una  de  las  variables  de  instancia  se  pueden  recibir  mediante  
los  parámetros  de  entrada.  En  los  constructores  y  métodos,  los  parámetros  se  definen  en  el   Código  3.    Sección  interna  (métodos)  
encabezado  o  firma  entre  los  paréntesis:  
 
public  Perro(String  n,  String  r,  int  e)  
 

   
14   [ POLITÉCNICO GANCOLOMBIANO] [ PARADIGMAS DE LA PROGRAMACIÓN ] 15
   

  Representa  el  tipo  de  dato  que  va  a  ser  retornado  como  resultado  del  método;  pueden  ser   Contenido
tipos  de  datos  primitivos  (byte,  short,  char,  int,  log,  float,  double  o  boolean)  o  no  primitivos  
  (Clases  o  Interfaces).  Cuando  el  método  no  retorne  nada  se  utiliza  la  palabra  clave  void.    
   
Nombre  
Cuando  se  define  un  método  en  un  programa  se  conoce  como  la  declaración  del  método,  la  
cual  tiene  dos  partes:  una  firma  y  un  cuerpo.  
  Anterior
El  nombre  identifica  al  método  para  invocarlo  (ejecución).  Este  representa  acciones,  por  esta  
 
Firma   razón  debería  comenzar  por  un  verbo.  
 
{  
      cuerpo    
     }   Lista  de  parámetros  
 
Siguiente
 
   
Figura  4.  Secciones  de  un  método:  Firma  y  cuerpo   Puede   tener   cero   o   más   parámetros   definidos   en   los   paréntesis   separado   por   medio   de  
comas   (,).   Normalmente,   cada   parámetro   se   define   por   medio   del   tipo   seguido   de   un  
  identificador,    que  equipare  el  nombre  del  parámetro.    
Al   observar   el   método   mostrarInformación   del   código3,   podremos   detectar   la   estructura   del  
método,  comenzando  por  la  firma,  la  cual  contiene  los  siguientes  elementos:   El   cuerpo   es   la   parte   restante   del   método   que   se   encuentra   delimitado   por   llaves   “{}”,  
también   se   conoce   como   bloque.   El   cuerpo   contiene   la   lógica   que   representa   el  
  comportamiento.   Las   variables   que   se   encuentren   declaradas   dentro   del   cuerpo   de   los  
public  void  mostrarInformacion()   métodos  se  conocen  como  variables  locales.  
 
modificadorDeAcceso  tipoDeRetorno  nombreMetodo  (ListaDeParametros)    
  2.2.4. Objetos  
 
Modificadores     El   proceso   de   crear   un   objeto   se   llama   instanciación   y   se   encarga   de   construir   un   nuevo  
  objeto  basado  en  una  clase  específica,  tomando  la  clase  como  una  plantilla.    
Cada   método   puede   usar   cero   (por   defecto)   o   más   modificadores   (específicos),   los   cuales  
Para  comenzar,  los  siguientes  pasos  le  servirán  de  guía:  
determinan  desde  donde  el  método  puede  ser  accedido  o  llamado  (modificadores  de  acceso  
o  visibilidad)  y  su  uso  (modificadores  de  no-­‐acceso).     Declarar  una  variable:  la  variable  que  se  declara  es  de  referencia  (de  tipo  no  primitivo),  la  cual  
  debe   ser   del   mismo   tipo   del   objeto   que   se   quiere   crear.   En   nuestro   ejemplo   se   declarará   una  
Los   modificadores   de   visibilidad   permitidos   son   default,   private,   protected   y   public   junto   a   variable  de  tipo  Perro  (tipo  de  dato  no  primitivo),    la  cual  servirá  para  almacenar  la  instancia  
los  modificadores  de  uso:  final,  static,  abstract,  synchronized,  native  y  scriptfp.   nueva  de  tipo  Perro  (realmente  su  referencia).  
Recuerde  solo  se  puede  utilizar  uno  de  los  modificadores  de  visibilidad  en  la  declaración  del   Perro  p;  
método.  
Crear   el   objeto:   para   crear   el   objeto   se   utiliza   la   palabra   reservada   u   operador   new   en  
  conjunto  con  un  llamado  al  constructor  para  crear  una  instancia  de  la  clase:  
Tipo  de  Retorno  
  Perro  p  =  new  Perro  ("Lucia",  "Criolla",  11);  

El  operador  new  retorna  una  referencia  de  la  instancia  nueva  de  la  clase  Perro  (dirección  de  
memoria).    

   
16   [ POLITÉCNICO GANCOLOMBIANO] [ PARADIGMAS DE LA PROGRAMACIÓN ] 17
   

  Figura  5.  Objetos  de  tipo  Perro   Contenido


   
Los   objetos   se   comunican   pasando   mensajes;   esto   significa   que   un   objeto   puede   ser  
2.3. Miembros  de  instancia   construido   para   exteriorizar   un   comportamiento   particular   a   través   una   operación   específica  
en   el   objeto.   En   Java,   esto   se   realiza   llamando   a   un   método   o   una   variable   en   el   objeto  
Dado  a  que  cuando  se  construye  un  objeto  cada  uno  tiene  sus  propias  copias  de  las    variables   usando  el  operador  ‘.’.  En  el  código  4,  línea  6  y  7,  se  hace  el  llamado  al  método  de  instancia   Anterior
y  métodos  definidos,  estos  dispondrán  de  sus  propios  miembros  para  almacenar  información   mostrarInformación  de  los  objetos  almacenados  en  las  variables  p1  y  p2.  Como  respuesta  se  
a  través  de  las  variables    y  ejecutar  sus  comportamientos  a  través  de  sus  métodos.   obtiene:  
Siguiendo   con   el   ejemplo   y   para   mostrar   cómo   se   utilizan   los   miembros   de   instancia   de   cada  
Perro  [  Nombre:Lucia,  raza:Criolla,  edad:11]  
objeto,  se  construirán  dos  objetos  de  tipo  Perro  y  se  almacenarán  en  las  variables  p1  y  p2  (Ver  
Perro  [  Nombre:Hector,  raza:Schnauzer,  edad:26]  
código  4),  con  la  siguiente  información:   Siguiente
 
   
1. Nombre:  Lucia,  Raza:  Criolla,  Edad:  11   2.4. Interacción  entre  objetos  
2. Nombre:  Héctor  Gregorio,  Raza:  Schnauzer,  Edad:  20  
Los   objetos   pueden   contener   y   crear   otros   objetos   ,   por   ejemplo,   si   la   guardería   canina  
  pudiera  cuidar  a  n  perros,  deberíamos  tener  la  opción:  
  1. public  class  Principal    
2. {     1. Crear   una   estructura   en   la   cual   se   pueda   adicionar   y   consultar   el   perfil   de   los   n   perros  
3. public  static  void  main(String[]  args)  {  
4. Perro  p1  =  new  Perro("Lucia",  "Criolla",  11);   en  la  guardería  canina.  Para  ello  se  define  un  arreglo  de  tipo  Perro  (ver  código  5,  línea  
5.  
Perro  p2  =  new  Perro("Hector  Gregorio",  "Schnauzer",  26);  
6. p1.mostrarInformacion();  
3),   que   se   inicializará   en   el   constructor   dándole   un   tamaño   que   se   recibe   por  
7. p2.mostrarInformacion();     parámetro  (recuerde  que  el  vector  es  una  estructura  de  tipo  estática).  
8. }  
9. }  
2. El   método   adicional   se   encargará   de   insertar   un   nuevo   perro   en   el   índice   dado   por  
  parámetro  (ver  código  5,  línea  8-­‐14).  
Código  4.    Ejemplo  acceso  miembros  de  instancia     1. public  class  GuarderiaCanina    
  2. {  
En  la  figura  5  se  muestran  los  dos  objetos  que  representan  a  los  dos  perros.     3. public  Perro[]    perros;  
4. public  GuarderiaCanina(int  tamañoGC)  
  5. {  
6. perros  =  new  Perro[tamañoGC];  
  7. }  
8. public  void  adicionarPerro(int  indice,  String  nombre,  String  raza,  int  edad)  
9. {  
  10. if(indice>=0  &&  indice<  perros.length)  
11. {  
12. perros[indice]=new  Perro(nombre,  raza,  edad);  
  13. }  
14. }  
  15. public  void  mostrarInformacion()  
16. {  
17. for  (int  i  =  0;  i  <  perros.length;  i++)    
  18. {  
19. if(perros[i]!=null)  
                                    20. perros[i].mostrarInformacion();  
Nombre:  Lucia   Nombre:  Hector  Gregorio  
  21. }  
  Raza:  Criolla   Raza:  Schnauzer   22. }  
Edad:  11  meses   Edad:  20  meses     23. }  
 
 

   
18   [ POLITÉCNICO GANCOLOMBIANO] [ PARADIGMAS DE LA PROGRAMACIÓN ] 19
   

Código  5.    GuarderiaCanina   • Cuando   se   crea   un   objeto,   este   contiene   copias   de   todas   las   variables   miembro   o   Contenido
campos  de  la  clase.  Estas  variables  se  conocen  como  variables  de  instancia.    
 
• Las   variables   que   se   encuentren   declaradas   dentro   del   cuerpo   de   los   métodos   se  
  1. public  class  Principal     conocen  como  variables  locales.  
2. {   • Los  objetos  se  comunican  pasando  mensajes.  Esto  significa  que  un  objeto  puede  ser  
3.   public  static  void  main(String[]  args)  {  
  4.          GuarderiaCanina  gc  =  new  GuarderiaCanina(5);   construido  para  exteriorizar  un  comportamiento  particular,  invocando  una  operación  
5.     gc.adicionarPerro(0,"Lucia",  "Criolla",  11);   específica  en  el  objeto.   Anterior
  6.     gc.adicionarPerro(1,"Hector",  "Schnauzer",  26);  
7.     gc.mostrarInformacion();  
8.   }    
  9. }  
10.  
 
 

Código  5.    Prueba  GuarderiaCanina  (Continuación)  


  Siguiente
 
 
 
En  resumen  
 
• Una  clase  es  un  modelo  o  una  plantilla  que  describe  una  entidad  (concepto  del  mundo  
real)   a   través   de   atributos   y   métodos,   donde   las   variables   son   los   atributos   que    
representan   el   estado   del   objeto   y   los   métodos   definen   su   comportamiento   (Las  
variables  y  los  métodos  en  una  clase  son  llamados  miembros).      
• Un  objeto  es  la  instancia  de  una  clase.    
• Una  clase  se  divide  en  dos  secciones  principales:  la  externa  y  la    interna.    La  sección  
externa  es  la  que  da  nombre  a  la  clase  y  contiene  la  sección  interna,  mientras  que  la    
sección  interna  contiene  las  variables,  métodos  y  constructores  de  la  clase.  
 
• Las   variables   se   declaran   en   un   espacio   de   memoria,   con   un   nombre   que   está  
asociado   a   dicho   espacio   y   un   tipo   (primitivo   o   no   primitivo).   Ese   espacio   puede    
almacenar   un   valor   que   puede   cambiar   a   lo   largo   del   tiempo,   es   por   esto   que   se   le  
conoce  por  el  nombre  de  variable.    

• Cuando   se   crea   un   objeto,   este   contiene   copias   de   todas   las   variables   miembro   o  
campos  de  la  clase.  Estas  variables  se  conocen  como  variables  de  instancia.    
• Los   constructores   de   las   clases   tienen   como   objetivo   prepara   adecuadamente   el  
objeto  (inicializar  en  un  estado  estable)  para  poder  usarlo.  
• Los   métodos   son   subrutinas   que   representan   una   lógica   que   determina   las  
operaciones  sobre  los  datos.  Ofrecen  dos  grandes  ventajas,  la  primera  es  que  permite  
reutilizar  el  código  y  la  segunda  es  que  convierte  el  programa  en  módulos.  Gracias  a  
estas  ventajas,  el  programa  mejora  su  mantenimiento  y  las  probabilidades  de  prevenir  
errores  

Para  tener  en  cuenta:  

   
20   [ POLITÉCNICO GANCOLOMBIANO] [ PARADIGMAS DE LA PROGRAMACIÓN ] 21

También podría gustarte