Este documento describe el patrón de diseño Adapter. El Adapter Pattern permite que clases con interfaces incompatibles trabajen juntas mediante la creación de una clase adaptadora que actúa como intermediaria. Se presenta un ejemplo en el que se usan adaptadores para integrar clases como "Bat", "Duck" y "MagicPotato" en una aplicación que usa la interfaz "Bird", aunque estas clases no la implementan directamente. Los tests muestran que los adaptadores permiten generar melodías y lecciones de vuelo con todas las clases de forma unific
Buenas prácticas para la construcción de softwareIker Canarias
Esta presentación sobre "buenas prácticas en la construcción de software" se basa principalmente en los "Principios de buena programación" de Christopher Diggins. Consejos generales sobre buenas prácticas, pero centrados en Java al final de la presentación.
Tipos de Operadores
Ejemplo proyecto tipo consola
Uso de operadores
Definir el programa de inicio
Tambien publicado en blog de C#
http://programacion-visual-c-sharp.blogspot.com/2014/02/primer-ejemplo-usando-operadores-en-c-sharp.html
Se trata de una de las herramientas de desarrollo incluidas en el JDK. Realiza un análisis de sintaxis del código escrito en los ficheros fuente de Java (con extensión *.java). Si no encuentra errores en el código genera los ficheros compilados (con extensión *.class).
Si bien los hospitales conjuntan a profesionales de salud que atienden a la población, existe un equipo de organización, coordinación y administración que permite que los cuidados clínicos se otorguen de manera constante y sin obstáculos.
Mario García Baltazar, director del área de Tecnología (TI) del Hospital Victoria La Salle, relató la manera en la que el departamento que él lidera, apoyado en Cirrus y Estela, brinda servicio a los clientes internos de la institución e impulsa una experiencia positiva en el paciente.
Conoce el Hospital Victoria La Salle
Ubicado en Ciudad Victoria, Tamaulipas, México
Inició operaciones en el 2016
Forma parte del Consorcio Mexicanos de Hospitales
Hospital de segundo nivel
21 habitaciones para estancia
31 camas censables
13 camillas
2 quirófanos
+174 integrantes en su plantilla
+120 equipos médicos de alta tecnología
+900 pacientes atendidos
Servicios de +20 especialidades
Módulos utilizados de Cirrus
HIS
EHR
ERP
Estela - Business Intelligence
Buenas prácticas para la construcción de softwareIker Canarias
Esta presentación sobre "buenas prácticas en la construcción de software" se basa principalmente en los "Principios de buena programación" de Christopher Diggins. Consejos generales sobre buenas prácticas, pero centrados en Java al final de la presentación.
Tipos de Operadores
Ejemplo proyecto tipo consola
Uso de operadores
Definir el programa de inicio
Tambien publicado en blog de C#
http://programacion-visual-c-sharp.blogspot.com/2014/02/primer-ejemplo-usando-operadores-en-c-sharp.html
Se trata de una de las herramientas de desarrollo incluidas en el JDK. Realiza un análisis de sintaxis del código escrito en los ficheros fuente de Java (con extensión *.java). Si no encuentra errores en el código genera los ficheros compilados (con extensión *.class).
Si bien los hospitales conjuntan a profesionales de salud que atienden a la población, existe un equipo de organización, coordinación y administración que permite que los cuidados clínicos se otorguen de manera constante y sin obstáculos.
Mario García Baltazar, director del área de Tecnología (TI) del Hospital Victoria La Salle, relató la manera en la que el departamento que él lidera, apoyado en Cirrus y Estela, brinda servicio a los clientes internos de la institución e impulsa una experiencia positiva en el paciente.
Conoce el Hospital Victoria La Salle
Ubicado en Ciudad Victoria, Tamaulipas, México
Inició operaciones en el 2016
Forma parte del Consorcio Mexicanos de Hospitales
Hospital de segundo nivel
21 habitaciones para estancia
31 camas censables
13 camillas
2 quirófanos
+174 integrantes en su plantilla
+120 equipos médicos de alta tecnología
+900 pacientes atendidos
Servicios de +20 especialidades
Módulos utilizados de Cirrus
HIS
EHR
ERP
Estela - Business Intelligence
Escaneo y eliminación de malware en el equiponicromante2000
El malware tiene muchas caras, y es que los programas maliciosos se reproducen en los ordenadores de diferentes formas. Ya se trate de virus, de programas espía o de troyanos, la presencia de software malicioso en los sistemas informáticos siempre debería evitarse. Aquí te muestro como trabaja un anti malware a la hora de analizar tu equipo
2. www.lauragonzafer.com
● Culo inquieto por naturaleza
● Apasionada de los videojuegos
Laura Gonzalez Fernandez
Software Engineer in training at LifullConnect
3. Index of contentIntroduction
¿Que son los Design Pattern?
Problema a resolver
Adapter Pattern
¿Que es el Adapter Pattern?
Como lo aplicamos
Ejemplo con Codigo
Conclusion
Q&A
Contenidos
4. ¿ Que son los Design Patterns ?
A grandes rasgos, los Design Patterns son
unas técnicas para resolver problemas
comunes en el desarrollo de software.
5. ¿ Que son los Design Patterns ?
Tienen que poseer ciertas características:
● Se debe haber comprobado su EFECTIVIDAD
resolviendo problemas similares en otras ocasiones
anteriores
● Debe ser REUTILIZABLE , lo que significa que se puede
aplicar a diferentes problemas de diseño en distintas
circunstancias
6. Tenemos una pequeña aplicación que genera cantos de
pájaro y lecciones de vuelo. Para generarlo necesitas
una lista de “Bird” que nos es proporcionada, donde
nos llegan nuestros objetos “Sparrow” y “Canary”, que
implementa la interfaz “Bird”, y poseen los métodos
“Fly” y “Sing”
Problema a resolver
7.
8.
9. La aplicación tiene que ampliarse y ahora también
tenemos que incluir los objetos “Bat”, “Duck” y
“MagicPotato”, que no parecen tener las funciones tal y
como las necesitamos, además de que no pueden ser
modificados para encajar en nuestro desarrollo
Problema a resolver
12. El Adapt Pattern nos permite crear una clase “adapter”
que haga de intermediario entre nuestra interfaz y las
nuevas clases.
Con ello podemos “simular” el comportamiento que ya
teníamos sin modificar las nuevas clases.
¿Que es el Adapt Pattern?
14. Si queremos enchufar un aparato con un conector
eléctrico europeo a una toma de corriente japonesa ,
necesitaremos un “Adaptador” que simule las
características que necesitamos para conectarnos y nos
de las “órdenes” que podamos entender para funcionar.
¿Que es el Adapt Pattern?
18. public interface Bird {
public String fly ();
public String sing();
}
Interfaz Bird
Esta es la interface que
agrupa todos los
objetos de tipo Bird
Con ella podemos
acceder a los métodos
fly y sing que devuelven
un string con el texto de
las canciones o
lecciones de vuelo de
ese Bird
19. public class Canary implements Bird{
public String fly()
{
return " Flying like a canary";
}
public String sing()
{
return "Melodious PIO PIO";
}
}
Clase Canary que
implementa Bird
Esta clase es una tipo
Bird y por tanto tiene
las dos funciones que
hereda de este.
20. public class MagicPotato {
public String rolling()
{
return "rolling potato";
}
public String talk()
{
return "Magic potato RULES";
}
}
MagicPotato
Esta es una clase
nueva a implantar que
no puede ser
modificada y no
implementa Bird con
lo cual no tiene los
métodos de esta y los
que ya tiene creados
no se llaman igual con
lo que la implantación
actual no los
reconocerá.
21. public class MagicPotato_Adapter implements Bird {
private MagicPotato potato;
public MagicPotato_Adapter(MagicPotato potato) {
this.potato = potato;
}
@Override
public String fly() {
return potato.rolling();
}
@Override
public String sing() {
return potato.talk();
}
}
MagicPotato_Adapter
implementa Bird
Esta es la clase
Adaptador que SI
implementa Bird y por
tanto puede hacer de
“puente” entre nuestra
implantación y la nueva
clase.
Mediante este adaptador
falseamos los métodos
de la interfaz llamando a
los necesarios en la clase
MagicPotato.
22. Bat
Esta es una clase
nueva a implantar, al
igual que MagicPotato
no puede implementar
Bird y tiene funciones
que no encajan con
las de nuestra
implantacion.
public class Bat {
private int singOk;
private int flyOk;
public Bat() { this.singOk = 0;this.flyOk = 0; }
public String fly(){
if (flyOk == 3){flyOk = 0;return "Fliying in the Darkness";}
flyOk = 0;
return "";
}
public void stopSingign(){flyOk ++; }
public void startToRun(){ flyOk ++;}
public void warmyourWings(){flyOk ++;}
public String makeSound(){
if (singOk == 3){singOk = 0;return "I am the Night";}
singOk = 0;
return "";
}
public void StopFlying(){ singOk ++; }
public void sitDown(){ singOk ++; }
public void warmVoice(){ singOk ++;}
}
23. Bat_Adapter
implementa Bird
Esta es la clase
Adaptador que SI
implementa Bird y por
tanto puede hacer de
“puente” entre nuestra
implantación y la nueva
clase.
Mediante este adaptador
falseamos los métodos
de la interfaz llamando a
los que son necesarios
para que tengamos el
mismo resultado que en
las otras clases.
public class Bat_Adapter implements Bird {
private Bat batsy;
public Bat_Adapter(Bat batsy) { this.batsy = batsy;}
@Override
public String fly() {
batsy.stopSingign();
batsy.startToRun();
batsy.warmyourWings();
return batsy.fly();
}
@Override
public String sing() {
batsy.stopFlying();
batsy.sitDown();
batsy.warmVoice();
return batsy.makeSound();
}
}
24. @Test
public void create_a_Melody() {
Bird isCaptain = new Sparrow();
Bird canary = new Canary();
Bird batsy = new Bat_Adapter(new Bat());
Bird donald = new Duck_Adapter(new Duck());
Bird potato = new MagicPotato_Adapter(new MagicPotato());
Melody melody = new Melody();
Melody melodyExpected = new Melody("I am the Night
Melodious PIO PIO Cuack Cuack Magic potato RULES Chirp
Chirp");
assertEquals( melody.createSong(new Bird[]{isCaptain,
canary, batsy, donald, potato}),melody.melody);
}
Test Create_a_Melody
Test que comprueba
que la implantación
nueva funciona
correctamente al crear
una canción.
25. @Test
public void teach_Flylessons(){
Bird isCaptain = new Sparrow();
Bird canary = new Canary();
Bird batsy = new Bat_Adapter(new Bat());
Bird donald = new Duck_Adapter(new Duck());
Bird potato = new MagicPotato_Adapter(new MagicPotato());
FlyTime flylesson = new FlyTime();
FlyTime flyLessonExpected = new FlyTime("Fliying in the
Darkness Flying like a canary Flying more or less rolling potato
Flying to steal your Bread ");
assertEquals(flyLessonExpected.flyLesson ,
flylesson.createFlylesson(new Bird []
{batsy,canary,donald,potato,isCaptain}));
}
Test teach_Flylessons
Test que comprueba
que la implantación
nueva funciona
correctamente al crear
una leccion de vuelo.