el concepto de clase con frecuencia un término puede definirse de diferentes maneras según el...
TRANSCRIPT
![Page 1: El concepto de clase Con frecuencia un término puede definirse de diferentes maneras según el enfoque. Desde el punto de vista del análisis y el diseño](https://reader033.vdocuments.mx/reader033/viewer/2022061301/54dd199b497959a82a8b4722/html5/thumbnails/1.jpg)
El concepto de clase
Con frecuencia un término puede definirse de diferentes maneras según el enfoque.
Desde el punto de vista del análisis y el diseño una clase es un patrón de comportamiento para un conjunto de objetos.
En la implementación una clase es un módulo de software.
Una clase que incluye atributos y servicios define un tipo de dato.
Una clase que incluye atributos y servicios y encapsula sus atributos, define un tipo de dato abstracto.
![Page 2: El concepto de clase Con frecuencia un término puede definirse de diferentes maneras según el enfoque. Desde el punto de vista del análisis y el diseño](https://reader033.vdocuments.mx/reader033/viewer/2022061301/54dd199b497959a82a8b4722/html5/thumbnails/2.jpg)
Una libreta de contactos mantiene el nombre, número de teléfono móvil, número de teléfono fijo y email de un conjunto de personas u organizaciones.
La clase Libreta_Contactos encapsula una colección de elementos de clase Contacto, representada con un arreglo parcialmente ocupado.
Los elementos se mantienen ordenados alfabéticamente por nombre y están comprimidos de modo que todas las posiciones libres están al final.
La clase cliente es responsable de controlar que haya lugar en la libreta antes de agregar un nuevo contacto.
Caso de Estudio: Libreta de Contactos
![Page 3: El concepto de clase Con frecuencia un término puede definirse de diferentes maneras según el enfoque. Desde el punto de vista del análisis y el diseño](https://reader033.vdocuments.mx/reader033/viewer/2022061301/54dd199b497959a82a8b4722/html5/thumbnails/3.jpg)
Caso de Estudio: Libreta de ContactosLibreta_Contactos
T [] Contactocant:entero
Contacto
nombre:StringnroMovil: StringnroFijo:Stringemail:String<< Constructores>>
Libreta_Contactos(max:entero)<<Comandos>>nuevo(nc:Contacto)eliminar(c:Contacto)<<Consultas>>cantContactos():enteroestaLlena():enteropertenece(c:Contacto):boolean
La cantidad de componentes del arreglo es fija, la cantidad de componentes ligadas es variable.Todas las componentes ligadas están en las primeras cant posiciones.
<<Constructor>>Contacto (n:String)<<Comandos>><<Consultas>>igual(c: Contacto):booleanmayor(c: Contacto):boolean
![Page 4: El concepto de clase Con frecuencia un término puede definirse de diferentes maneras según el enfoque. Desde el punto de vista del análisis y el diseño](https://reader033.vdocuments.mx/reader033/viewer/2022061301/54dd199b497959a82a8b4722/html5/thumbnails/4.jpg)
Caso de Estudio: Libreta de Contactos
class Libreta_Contactos{//Atributos de Instancia private Contacto[] T; private int cant;/*Constructor crea una coleccion con capacidad para max elementos*/public Libreta_Contactos(int max) { T= new Contacto[max]; cant = 0;}
![Page 5: El concepto de clase Con frecuencia un término puede definirse de diferentes maneras según el enfoque. Desde el punto de vista del análisis y el diseño](https://reader033.vdocuments.mx/reader033/viewer/2022061301/54dd199b497959a82a8b4722/html5/thumbnails/5.jpg)
Caso de Estudio: Libreta de Contactos
lib
…length
6
T
cant
0
Libreta_Contactos lib = Libreta_Contactos(6);
![Page 6: El concepto de clase Con frecuencia un término puede definirse de diferentes maneras según el enfoque. Desde el punto de vista del análisis y el diseño](https://reader033.vdocuments.mx/reader033/viewer/2022061301/54dd199b497959a82a8b4722/html5/thumbnails/6.jpg)
Si la libreta de contactos se mantiene ordenada por nombre, el servicio nuevo no puede implementarse asignando el nuevo contacto a la primera posición libre.
Para comprender cómo implementar el servicio nuevo comencemos visualizando la libreta de contactos a través de una grilla con capacidad para 6 contactos
Caso de Estudio: Libreta de Contactos
![Page 7: El concepto de clase Con frecuencia un término puede definirse de diferentes maneras según el enfoque. Desde el punto de vista del análisis y el diseño](https://reader033.vdocuments.mx/reader033/viewer/2022061301/54dd199b497959a82a8b4722/html5/thumbnails/7.jpg)
Caso de Estudio: Libreta de Contactos
Nombre Número de Móvil Número Fijo email
Observemos que la grilla es un modelo con un alto nivel de abstracción, no modelamos objetos y referencias, nos concentramos en el ordenamiento.
![Page 8: El concepto de clase Con frecuencia un término puede definirse de diferentes maneras según el enfoque. Desde el punto de vista del análisis y el diseño](https://reader033.vdocuments.mx/reader033/viewer/2022061301/54dd199b497959a82a8b4722/html5/thumbnails/8.jpg)
Caso de Estudio: Libreta de Contactos
Nombre Número de Móvil Número Fijo email
Davini Laura … … …
Consideremos que se agrega un nuevo contacto para Davini Laura, como la grilla está vacía el primer contacto ocupa la primera posición en la grilla.Notemos que no interesan los otros atributos porque la libreta se ordena por nombre.
![Page 9: El concepto de clase Con frecuencia un término puede definirse de diferentes maneras según el enfoque. Desde el punto de vista del análisis y el diseño](https://reader033.vdocuments.mx/reader033/viewer/2022061301/54dd199b497959a82a8b4722/html5/thumbnails/9.jpg)
Caso de Estudio: Libreta de Contactos
Nombre Número de Móvil Número Fijo email
Davini Laura … … … Polo Leo … … …
Se agrega ahora un nuevo contacto para Polo Leo. Como el nuevo contacto es mayor alfabéticamente a Davini Laura, se agrega al final.
![Page 10: El concepto de clase Con frecuencia un término puede definirse de diferentes maneras según el enfoque. Desde el punto de vista del análisis y el diseño](https://reader033.vdocuments.mx/reader033/viewer/2022061301/54dd199b497959a82a8b4722/html5/thumbnails/10.jpg)
Caso de Estudio: Libreta de Contactos
Nombre Número de Móvil Número Fijo email
Davini Laura … … … Polo Leo … … …
Se agrega ahora un nuevo contacto para Avila Mario. Como el nuevo contacto es menor alfabéticamente que Davini Laura, se agrega al principio, arrastrando los que siguen una posición hacia abajo.
![Page 11: El concepto de clase Con frecuencia un término puede definirse de diferentes maneras según el enfoque. Desde el punto de vista del análisis y el diseño](https://reader033.vdocuments.mx/reader033/viewer/2022061301/54dd199b497959a82a8b4722/html5/thumbnails/11.jpg)
Caso de Estudio: Libreta de Contactos
Nombre Número de Móvil Número Fijo email
Davini Laura … … … Polo Leo … … … Polo Leo … … …
![Page 12: El concepto de clase Con frecuencia un término puede definirse de diferentes maneras según el enfoque. Desde el punto de vista del análisis y el diseño](https://reader033.vdocuments.mx/reader033/viewer/2022061301/54dd199b497959a82a8b4722/html5/thumbnails/12.jpg)
Caso de Estudio: Libreta de Contactos
Nombre Número de Móvil Número Fijo email
Davini Laura … … … Polo Leo … … … Polo Leo … … …
![Page 13: El concepto de clase Con frecuencia un término puede definirse de diferentes maneras según el enfoque. Desde el punto de vista del análisis y el diseño](https://reader033.vdocuments.mx/reader033/viewer/2022061301/54dd199b497959a82a8b4722/html5/thumbnails/13.jpg)
Caso de Estudio: Libreta de Contactos
Nombre Número de Móvil Número Fijo email
Davini Laura … … … Davini Laura … … … Polo Leo … … …
![Page 14: El concepto de clase Con frecuencia un término puede definirse de diferentes maneras según el enfoque. Desde el punto de vista del análisis y el diseño](https://reader033.vdocuments.mx/reader033/viewer/2022061301/54dd199b497959a82a8b4722/html5/thumbnails/14.jpg)
Caso de Estudio: Libreta de Contactos
Nombre Número de Móvil Número Fijo email
Avila Mario … … … Davini Laura … … … Polo Leo … … …
![Page 15: El concepto de clase Con frecuencia un término puede definirse de diferentes maneras según el enfoque. Desde el punto de vista del análisis y el diseño](https://reader033.vdocuments.mx/reader033/viewer/2022061301/54dd199b497959a82a8b4722/html5/thumbnails/15.jpg)
Caso de Estudio: Libreta de Contactos
Nombre Número de Móvil Número Fijo email
Avila Mario … … … Davini Laura … … … Parodi Mario … … … Polo Leo … … …
Se agrega ahora un nuevo contacto para Parodi Mario. Como el nuevo contacto es menor alfabéticamente que Polo Leo, se agrega en la posición de este contacto, arrastrando a Polo Leo
![Page 16: El concepto de clase Con frecuencia un término puede definirse de diferentes maneras según el enfoque. Desde el punto de vista del análisis y el diseño](https://reader033.vdocuments.mx/reader033/viewer/2022061301/54dd199b497959a82a8b4722/html5/thumbnails/16.jpg)
Caso de Estudio: Libreta de Contactos
Nombre Número de Móvil Número Fijo email
Avila Mario … … … Davini Laura … … … Parodi Mario … … … Polo Leo … … … Ramos Marisa … … …
Se agrega ahora un nuevo contacto para Ramos Marisa. Como el nuevo contacto es mayor alfabéticamente que el último contacto, se agrega al final
![Page 17: El concepto de clase Con frecuencia un término puede definirse de diferentes maneras según el enfoque. Desde el punto de vista del análisis y el diseño](https://reader033.vdocuments.mx/reader033/viewer/2022061301/54dd199b497959a82a8b4722/html5/thumbnails/17.jpg)
Caso de Estudio: Libreta de Contactos
Nombre Número de Móvil Número Fijo email
Avila Mario … … … Castro Luis … … … Davini Laura … … … Parodi Mario … … … Polo Leo … … … Ramos Marisa … … …
Se agrega ahora un nuevo contacto para Castro Luis. Como el nuevo contacto es menor alfabéticamente que Davini Laura se arrastran todos los contactos a partir de Davini Laura.
![Page 18: El concepto de clase Con frecuencia un término puede definirse de diferentes maneras según el enfoque. Desde el punto de vista del análisis y el diseño](https://reader033.vdocuments.mx/reader033/viewer/2022061301/54dd199b497959a82a8b4722/html5/thumbnails/18.jpg)
El servicio nuevo tiene que funcionar considerando varios casos diferentes:
• La libreta está vacía
el contacto es:
• Menor a todos
• Mayor a todos
• Mayor al primero pero Menor que el último
Asumimos que la clase cliente controla que la libreta no está llena.
Caso de Estudio: Libreta de Contactos
![Page 19: El concepto de clase Con frecuencia un término puede definirse de diferentes maneras según el enfoque. Desde el punto de vista del análisis y el diseño](https://reader033.vdocuments.mx/reader033/viewer/2022061301/54dd199b497959a82a8b4722/html5/thumbnails/19.jpg)
La grilla nos permite visualizar la libreta de contactos de manera abstracta para mostrar cómo se agrega cada nuevo contacto en cada caso.
El diagrama de objetos, que también es una abstracción, es útil para graficar cómo se administra la memoria, pero no es una buena herramienta para diseñar el algoritmo nuevo.
Caso de Estudio: Libreta de Contactos
![Page 20: El concepto de clase Con frecuencia un término puede definirse de diferentes maneras según el enfoque. Desde el punto de vista del análisis y el diseño](https://reader033.vdocuments.mx/reader033/viewer/2022061301/54dd199b497959a82a8b4722/html5/thumbnails/20.jpg)
Algoritmo nuevo DE nc Buscar la posición del primer elemento mayor a nc
Arrastrar todos los elementos a partir de esa posición Asignar nc a la posición
Incrementar la cantidad de contactos
Caso de Estudio: Libreta de Contactos
public void nuevo(Contacto nc){//Requiere que la colección no esté llena int pos = posInsercion(nc,cant); arrastrarDsp (pos,cant-pos); T[pos] = nc; cant++; }
![Page 21: El concepto de clase Con frecuencia un término puede definirse de diferentes maneras según el enfoque. Desde el punto de vista del análisis y el diseño](https://reader033.vdocuments.mx/reader033/viewer/2022061301/54dd199b497959a82a8b4722/html5/thumbnails/21.jpg)
Caso trivial: Si la cantidad de elementos es 0, la posición de inserción es 0Caso trivial: Si nc es mayor que el último nombre la posición es la últimaCaso Recursivo: buscar la posición de inserción entre las n-1 componentes
Caso de Estudio: Libreta de Contactos
private int posInsercion (Contacto nc,int n){/* Retornar la posición del primer elemento mayor a nc, o 0 si no existe*/ int pos = 0; if (n > 0) if (nc.mayor(T[n-1]) pos = n; else pos = posInsercion (con,--n); return pos;}
![Page 22: El concepto de clase Con frecuencia un término puede definirse de diferentes maneras según el enfoque. Desde el punto de vista del análisis y el diseño](https://reader033.vdocuments.mx/reader033/viewer/2022061301/54dd199b497959a82a8b4722/html5/thumbnails/22.jpg)
Caso de Estudio: Libreta de Contactos
private void arrastrarDsp (int pos,int n){ if (n > 0){ T[pos+n] = T[pos+n-1]; arrastrarDsp(pos,--n); }}
¿Qué pasa si ya existe un contacto con ese nombre?
Modifique la implementación de nuevo de modo que si existe un contacto con ese nombre, no agregue nc
![Page 23: El concepto de clase Con frecuencia un término puede definirse de diferentes maneras según el enfoque. Desde el punto de vista del análisis y el diseño](https://reader033.vdocuments.mx/reader033/viewer/2022061301/54dd199b497959a82a8b4722/html5/thumbnails/23.jpg)
Caso de Estudio: Libreta de Contactos
Nombre Número de Móvil Número Fijo email
Avila Mario … … … Castro Luis … … … Davini Laura … … … Parodi Mario … … … Polo Leo … … … Ramos Marisa … … …
Supongamos que se decide eliminar el contacto Castro Luis. Los contactos que siguen deben arrastrarse una posición hacia arriba.
![Page 24: El concepto de clase Con frecuencia un término puede definirse de diferentes maneras según el enfoque. Desde el punto de vista del análisis y el diseño](https://reader033.vdocuments.mx/reader033/viewer/2022061301/54dd199b497959a82a8b4722/html5/thumbnails/24.jpg)
Caso de Estudio: Libreta de Contactos
Nombre Número de Móvil Número Fijo email
Avila Mario … … … Davini Laura … … … Davini Laura … … … Parodi Mario … … … Polo Leo … … … Ramos Marisa … … …
![Page 25: El concepto de clase Con frecuencia un término puede definirse de diferentes maneras según el enfoque. Desde el punto de vista del análisis y el diseño](https://reader033.vdocuments.mx/reader033/viewer/2022061301/54dd199b497959a82a8b4722/html5/thumbnails/25.jpg)
Caso de Estudio: Libreta de Contactos
Nombre Número de Móvil Número Fijo email
Avila Mario … … … Davini Laura … … … Parodi Mario … … … Parodi Mario … … … Polo Leo … … … Ramos Marisa … … …
![Page 26: El concepto de clase Con frecuencia un término puede definirse de diferentes maneras según el enfoque. Desde el punto de vista del análisis y el diseño](https://reader033.vdocuments.mx/reader033/viewer/2022061301/54dd199b497959a82a8b4722/html5/thumbnails/26.jpg)
Caso de Estudio: Libreta de Contactos
Nombre Número de Móvil Número Fijo email
Avila Mario … … … Davini Laura … … … Parodi Mario … … … Polo Leo … … … Polo Leo … … … Ramos Marisa … … …
![Page 27: El concepto de clase Con frecuencia un término puede definirse de diferentes maneras según el enfoque. Desde el punto de vista del análisis y el diseño](https://reader033.vdocuments.mx/reader033/viewer/2022061301/54dd199b497959a82a8b4722/html5/thumbnails/27.jpg)
Caso de Estudio: Libreta de Contactos
Nombre Número de Móvil Número Fijo email
Avila Mario … … … Davini Laura … … … Parodi Mario … … … Polo Leo … … … Polo Leo … … … Ramos Marisa … … …
![Page 28: El concepto de clase Con frecuencia un término puede definirse de diferentes maneras según el enfoque. Desde el punto de vista del análisis y el diseño](https://reader033.vdocuments.mx/reader033/viewer/2022061301/54dd199b497959a82a8b4722/html5/thumbnails/28.jpg)
Caso de Estudio: Libreta de Contactos
Nombre Número de Móvil Número Fijo email
Avila Mario … … … Davini Laura … … … Parodi Mario … … … Polo Leo … … … Ramos Marisa … … … Ramos Marisa … … …
![Page 29: El concepto de clase Con frecuencia un término puede definirse de diferentes maneras según el enfoque. Desde el punto de vista del análisis y el diseño](https://reader033.vdocuments.mx/reader033/viewer/2022061301/54dd199b497959a82a8b4722/html5/thumbnails/29.jpg)
Caso de Estudio: Libreta de Contactos
Nombre Número de Móvil Número Fijo email
Avila Mario … … … Davini Laura … … … Parodi Mario … … … Polo Leo … … … Ramos Marisa … … …
![Page 30: El concepto de clase Con frecuencia un término puede definirse de diferentes maneras según el enfoque. Desde el punto de vista del análisis y el diseño](https://reader033.vdocuments.mx/reader033/viewer/2022061301/54dd199b497959a82a8b4722/html5/thumbnails/30.jpg)
El servicio eliminar tiene que funcionar considerando varios casos diferentes:
• La libreta está vacía
el contacto:
• No pertenece a la libreta
• Es el primero
• Es el último
• Es Mayor al primero pero Menor que el últimoObservemos que con la modificación en el comando nuevo no puede haber dos contactos con el mismo nombre
Caso de Estudio: Libreta de Contactos
![Page 31: El concepto de clase Con frecuencia un término puede definirse de diferentes maneras según el enfoque. Desde el punto de vista del análisis y el diseño](https://reader033.vdocuments.mx/reader033/viewer/2022061301/54dd199b497959a82a8b4722/html5/thumbnails/31.jpg)
Algoritmo eliminarDE c Buscar la posición del c Si existe
Arrastrar los elementos desde posición hasta el último Decrementar la cantidad de contactos
Caso de Estudio: Libreta de Contactos
public void eliminar(Contacto c){/*Elimina, si existe, el contacto c */ int pos = posElemento (c,cant); if (pos < cant){ arrastrarAnt(pos,cant-pos-1); cant--; }}
![Page 32: El concepto de clase Con frecuencia un término puede definirse de diferentes maneras según el enfoque. Desde el punto de vista del análisis y el diseño](https://reader033.vdocuments.mx/reader033/viewer/2022061301/54dd199b497959a82a8b4722/html5/thumbnails/32.jpg)
Caso de Estudio: Libreta de ContactosLibreta_Contactos
T [] Contactocant:entero
Contacto
nombre:StringnroMovil: StringnroFijo:Stringemail:Stringciudad:String
<< Constructores>>Libreta_Contactos(max:entero)<<Comandos>>nuevo(nc:Contacto)eliminar(c:Contacto)<<Consultas>>cantContactos():enteroestaLlena():enteropertenece(c:Contacto):boolean
¿Qué cambios hay que hacer en Libreta_Contactos?
<<Constructor>>Contacto (n:String)<<Comandos>><<Consultas>>igual(c: Contacto):booleanmayor(c: Contacto):boolean
![Page 33: El concepto de clase Con frecuencia un término puede definirse de diferentes maneras según el enfoque. Desde el punto de vista del análisis y el diseño](https://reader033.vdocuments.mx/reader033/viewer/2022061301/54dd199b497959a82a8b4722/html5/thumbnails/33.jpg)
Caso de Estudio: Libreta de ContactosLibreta_Contactos
T [] Contactocant:entero
Contacto
nombre:StringnroMovil: StringnroFijo:Stringemail:Stringciudad:String
<< Constructores>>Libreta_Contactos(max:entero)<<Comandos>>nuevo(nc:Contacto)eliminar(c:Contacto)<<Consultas>>cantContactos():enteroestaLlena():enteropertenece(c:Contacto):boolean
¿Y si la libreta tienen que quedar ordenada por nroMovil?
<<Constructor>>Contacto (n:String)<<Comandos>><<Consultas>>igual(c: Contacto):booleanmayor(c: Contacto):boolean
![Page 34: El concepto de clase Con frecuencia un término puede definirse de diferentes maneras según el enfoque. Desde el punto de vista del análisis y el diseño](https://reader033.vdocuments.mx/reader033/viewer/2022061301/54dd199b497959a82a8b4722/html5/thumbnails/34.jpg)
Caso de Estudio: Libreta de ContactosLibreta_Marcadores
T [] Marcadorcant:entero
Marcador
…
<< Constructores>>Libreta_Marcadores(max:entero)<<Comandos>>nuevo(nm: Marcador)eliminar(c: Marcador)<<Consultas>>cantMarcador():enteroestaLlena():enteropertenece(c:Marcador):boolean
<<Constructor>>Marcador (n:String)<<Comandos>><<Consultas>>mayor (c: Marcador):boolean
¿Qué métodos cambian?