Seguidores

MIS WEBS



viernes, 28 de junio de 2019

SVG




GENERA GRAFICOS VECTORIALES CON <svg>

Un grafico vectorial es un dibujo esclable a cualquier tamaño, es una forma de generar dibujos de una forma muy ligera para el navegador y mucho más simple que canvas. El contenedor sgv es muy útil para gnerar dibujos de textos, circulos, cuadrados.
En primer lugar abriremos una eqiqueta sgv y dentro de ella podrmos incluir el resto de equetas
<text>
Cargaremos textos dentro de nuestro contenedor sgv. Los atributos x e y marcaran el punto en el que se situa nuestro dibujo.El atributo fill lo utilizaremos para indicar el color del relleno.



<rect>
Lo utilizaremos para generar un rectangulo. El atributo stroke sera el borde de nuestra imagen.
<circle>
Crea un circulo, para posicionarlo tenemos los atribuyos cx y cy, para definir el tamaño tenemos el atributo r que representa el rádio de nuestro circulo y para definir el grosor del borde tenemos stroke-width


<line>
Crearemos un linea, x1 y y1 marcará el punto en el que iniciamos nuestra línea, mientras x2 e y2 marca el fin de la línea.
<ellipse>
Es una figura geométrica parecida a un circulo pero no tiene un radio regular. utilizaremos los atributos cx y cy para situar la elipse y utilizaremos rx y ry para darle forma a nuestra elipse.



<polyline>
Una poli linea es un conjunto de líneas, utilizaremos el atributo points para darle los puntos x,y en los que inicia cada línea (points="20,20 40,25 60,40"). En la siguiente imágen crearemos dos polilíneas con un texto superpuesto y un elipse.



Degradados <defs> DEGRADADO CIRCULAR


<tspan>
Podemos utilizar esta etiqueta para insertar textos dentro de una etiqueta text.



martes, 11 de junio de 2019

BorderLayout


BorderLayout (diseño de borde): Dispondremos los objetos utilizando los puntos cardinales como referencia. Los componentes que introduzcamos en cada una de las zonas se harán lo suficiente mente grandes como para llenar la zona a la que pertenecen.






BorderLayout tiene una característica peculiar y es que los componentes que introduzcamos en cada una de las zonas se harán lo suficiente mente grandes como para llenar la cuadricula en la que se encuentra.

Ejemplo con el constructor por defecto BorderLayout():


class Panel extends JPanel{
             public Panel() {
                    setLayout(new BorderLayout());
                    add(new JButton ("NORTE"),BorderLayout.NORTH);
                    add(new JButton ("CENTRO"),BorderLayout.CENTER);
                    add(new JButton ("OUESTE"),BorderLayout.EAST);
                    add(new JButton("SUR"),BorderLayout.SOUTH);
                    add(new JButton("ESTE"),BorderLayout.WEST);
             }
  }







Existe un segundo constructor que nos permite dar espacio entre los componentes

BorderLayout(espacio horizontal entre componentes, espacio vertical entre componentes )

class Panel extends JPanel{

             public Panel() {
                    setLayout(new BorderLayout(10,20));
                    add(new JButton ("NORTE"),BorderLayout.NORTH);
                    add(new JButton ("CENTRO"),BorderLayout.CENTER);
                    add(new JButton ("OUESTE"),BorderLayout.EAST);
                    add(new JButton("SUR"),BorderLayout.SOUTH);
                    add(new JButton("ESTE"),BorderLayout.WEST);
             }
       }



martes, 4 de junio de 2019

Etiquetas En linea Html5

Etiquetas inline

Son aquellas que se encuentran dentro de un párrafo y no generan salto de línea (<p></p>), estas etiquetas no subdividen el párrafo en partes, su función es informar al buscador el significado de las palabras e importancia sobre el resto.

Etiquetas in line

ETIQUETA USO
<strong> Lo veremos en el navegador como texto en negrita, pero el sentido para html es que esa en concreto es una palabra muy importante para nosotros, es una palabra clave
<em> Lo utilizaremos para dar énfasis a una palabra o conjunto de palabras, se mostrará en el navegador como cursiva
<small> Lo utilizaremos dentro de un footer siempre y su utilidad es indicar al browser que se trata de un texto legal.
<cite> Para realizar citas a autores.
<dfn> Se utiliza para hacerdefiniciones.
<i> Crea una caja en línea y se utiliza paraestilos y colores en el texto que estmos escribiendo, no tiene sentido semantico.
<code> Le indicamos que dentro de esta etiqueta eixite un trozo de código programación.
<abbr> Indicamos que se trata de una abreviatura
<data> Para datos de una estadística o etc.
<br> Salto de línea,no es necesario cerrarlo
<q> cita a libros, videos, canciones...
<del> Texto eliminado, lo podemos utilizar para precios antiguos, lo veremos como un texto tachado
<pre> Matiene el formato anterior del texto.
<sub> Subindice ejem. 259 /50
<sup> Poner potenciales. ejm. 150 25.
<time> fechas
<time datetime "2018-03-30" pubdate>
<mark> resaltado de texto subrayador.
<kdb> Cuando hacemos alusión a atajos de teclado o teclas del teclado(alt,sift, enter, control+spr...).>
<span> No tienen sentido semántico, la única utilidad que tiene es la de seleccionar una palabra o conjunto de palabras para posteriormente modificarlas con css o JavaScript.
<a> hipervinculo, palabra ancla o ancorText
<a href= "RUTA" target="_black" rel="follow"> ...texto... </a>
lo utilizaremos para redirecciones a una url , target= “_blank” abrirá la URL en otra pestaña nueva y rel follow o nofollow determinara el tipo de nelace que hacemos.
<address> Lo utilizaremos dentro de un footer y se usa para datos personales emali,teléfonos,dni
<b> Fuente en negrita esta etiqueta esta desaconsejada en html5 se aconseja utilizar estilos css como font-weight: bolder;. Cabe recalcar que no es lo mismo que la etiqueta Strong que proporciona un sentido semántico de énfasis.

PARADIGMA DE LA PROGRAMACIÓN GENÉRICA EN JAVA


¿Qué es la programación genérica?


La programación genérica surge a partir de la versión 5.0 de java en el año 2004. Es un paradigma informático que nos indica que tenemos que crear un código que podamos reutilizar para otros objetos de diverso tipo. Por ejemplo el objeto ArrayList lo podemos utilizar para manejar y reutilizar objetos de tipo String, coche, moto….
Le pasaríamos por parámetros entre corchetes angulares <> el objeto al objeto ArrayList. Así conseguimos reutilizar el objeto ArrayList con cualquier objeto. El objeto pasado al ArrayList entre corchetes angulares <> se llama parámetro de tipo.



paradigma de la programación generica en java
parámetros de tipo en programación genérica de java




Tenemos que tener en cuenta que no podemos pasar como parámetro tipo una clase primitiva(int, long, boolean,double…)



VENTAJA DE LA PROGRAMACIÓN GENÉRICA


Esto mismo lo podríamos realizar utilizando una propiedad de java que es la herencia pero tendríamos que realizar uso continuo del casting. Por otra parte cuando heredas un objeto y le haces un casting el fallo no saldría en tiempo de compilación si no en tiempo de ejecución y esto haría más complicado controlar los posibles errores. Todo esto hace mas complejo de nuestro código.

Utilizar la programación genérica:

·         Hace nuestro código más sencillo.
·         Podemos reutilizar código de una forma más rápida.
·         Los errores nos acontecerán en la compilación, el IDE (entorno desarrollo) nos avisará y podremos rectificar antes de programar más líneas de código.

·         Al pasar un parámetro tipo queda más claro en nuestro código que tipo de dato estamos manejando.




Como crear mi clase genérica



Crearremos una clase y le pasarémos por parámetro tipo nuestro objeto. Es una buena praxis el pasarle una letra mayúscula que suele ser T, U,K. Podemos utilizar cualquier otra y no afectará a nuestro código pero es aconsejable pasarle estas para que el resto de programadores identifiquen que son.
public class ClaseGenericaaaaaaa <Q>{
}

Creamos una variable de tipo de tipo Q y un constructor.

public class ClaseGenericaaaaaaa <Q>{
       private Q xxxx;
       public ClaseGenericaaaaaaa() {
             xxxx = null;
       }
}




Ahora creamos los MÉTODOS GETTER Y SETTER

public class ClaseGenericaaaaaaa <Q>{
       private Q xxxx;
       //**constructor**
       public ClaseGenericaaaaaaa() {
             xxxx = null;
       }//**setter
       public void setClaseGenericaaaaaaa (Q xxxx ) {
             this.xxxx = xxxx;         
       }//getter
       public Q   getClaseGenericaaaaaaa () {
             return xxxx;
       }
}







Nos iremos al método main crearemos un objeto de la clase ClaseGenericaaaaaaa al que le pasamos por parámetro de tipo un String.


public class eSTOva {
       public static void main(String[] args) {
//le decimos que Q será un String
ClaseGenericaaaaaaa <String> CrearString = new ClaseGenericaaaaaaa<String>();
             //establecemos dato guardado
             CrearString.setClaseGenericaaaaaaa("DDDDDDDDDDDDDDD");
             //lo recuperamos para imprimirlo
             System.out.println(CrearString.getClaseGenericaaaaaaa());
       }
}





Antes le pasamos un parámetro tipo de String, pero puede ser un File o cualquier otro que deseemos.

public class eSTOva {
       public static void main(String[] args) {
ClaseGenericaaaaaaa <String> CrearString = new ClaseGenericaaaaaaa<String>();
ClaseGenericaaaaaaa <File> RutaAcceso = new ClaseGenericaaaaaaa<File>();

       CrearString.setClaseGenericaaaaaaa("DDDDDDDDDDDDDDD");
       RutaAcceso.setClaseGenericaaaaaaa(new File("C:"+File.separator+"Users"                                            +File.separator+"dagip"
                                        +File.separator+"Desktop"                                                       +File.separator+"BOGEER"                                                        +File.separator+"imagenes"
                                        +File.separator+"video"));

                    //nos regresa un String
             System.out.println(CrearString.getClaseGenericaaaaaaa());
                    //nos regresa un File
             System.out.println(RutaAcceso.getClaseGenericaaaaaaa());
       }
}





Al ser un objeto de tipo File podemos decir lo siguiente, porque posee métodos de la clase File. Tenemos las ventajas de la herencia sin tener los problemas del casting.


System.out.println(RutaAcceso.getClaseGenericaaaaaaa().getAbsolutePath());







CREAR UN MÉTODO GENÉRICO


Es un método que podemos utilizar con cualquier tipo de objeto, no es necesario que se generado dentro de una clase genérica, lo podremos construir en cualquier tipo de clase. Y se adptará al objeto que le pasemos por parámetro tipo. No se le puede pasar un tipo de dato primitivo.
Su sintaxis es similar a la utilizada en una clase genérerica.

public static <K> String getdato (K variable){
             return "Este es tu dato     " + variable;
       }



Si deseamos que nos regrese un dato sin especificar que sea igual al objeto que recibe
public static <K> K getdato (K variable){
             return "Este es tu dato     " + variable;
       }



Ahora lo utilizamos, nos imprimiría en la ventana de inmediato lo que tenemos en ambas variables a pesar que una es File y la otra String y sin hacer un casting:


System.out.println(eSTOva.getdato(CrearString));
System.out.println(eSTOva.getdato(RutaAcceso));





HERENCIA DE CLASES GENÉRICAS Y TIPOS COMODÍN



La herencia en las clases genéricas no es igual al que tiene en el resto de clases. Esta anomalía a la hora de heredar de una clase genérica nos obligar
Recordemos que en una clase normal existía el pricipio de sustitución


Principio de sustitución: Se puede utilizar un objeto de una sub clase siempre que el programa espere un objeto de la Superclase. Por lo que un objeto se puede comportar de diferente manera dependiendo del contexto. Podremos utilizarlo siempre que podamos decir ES UN. En el siguiente caso podemos decir cerdo es carne y pollo es carne.

             Carne [] Cerdo=new Carne[5];
                Carne [] Pollo =new Carne[6];
                Carne [] ArticulosCarne=new Carne[11];
for (int x=0;  x<5;  x++) {ArticulosCarne[x]= Cerdo[x];}
for (int y=5,x=0;y<11 && x<6;y++,x++){ArticulosCarne[y]=Pollo[x];}



En las clases genéricas no existe relación entre los objetos. La Clase <carner> es un objeto con unas propiedades y métodos, la Clase <cerdo> es otro objeto independiente con unas propiedades y métodos, pero no tienen ningún nexo en común.


Para tener una salida a esto tenemos la posibilidad de crear un método genérico en la clase padre y pasarle por parámetros la clase hija. Luego iremos al método main y llamaremos a ese método.

ClaseGenericaaaaaaa < ArticulosCarne []> CrearString = new ClaseGenericaaaaaaa< ArticulosCarne []>();
ClaseGenericaaaaaaa < Pollo []> CrearString = new ClaseGenericaaaaaaa< Pollo []>();
ClaseGenericaaaaaaa < Cerdo []> CrearString = new ClaseGenericaaaaaaa< Cerdo []>();

Creamos el método diciéndole que hereda de ArticulosCarne

public static void getid(ClaseGenericaaaaaaa <? extends ArticulosCarne > p ) {
              Pollo heredaCarne = p.getClaseGenericaaaaaaa();
             System.out.print(nod);
       }


Ahora podemos utilizar el getClaseGenericaaaaaaa() en el método main.


             NUMERO1.setClaseGenericaaaaaaa(Pollo ());

Buscar este blog

Sandisk y Western Digital