亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? java6.htm

?? E-books about Java Programing in Spanish
?? HTM
字號:
<HTML>
<HEAD>
<TITLE>Java desde Cero</TITLE>
</HEAD>
<BODY background=/iconos/1.gif  TEXT=000000 LINK=FF0000 VLINK=A62A2A>
<H1>Hagamos algo...</H1>
<P>
Bueno, vamos a hacer una peque&ntilde;a aplicaci&oacute;n para
practicar un poco.
<P>
Para empezar, vamos a desarrollar un poquito una clase para trabajar
con n&uacute;meros complejos.
<H2>La clase Complejo</H2>
<PRE>
<FONT SIZE=2>// grabar como Complejo.java
// compilar con &quot;javac Complejo.java&quot;
public final class Complejo extends Number {

	// atributos:
		private float x;
		private float y;

	// constructores:
	public Complejo() {
		x = 0;
		y = 0;
	}
	public Complejo(float  rx, float iy) {
		x = rx;
		y = iy;
	}

	// m&eacute;todos:
	// Norma
	public final float Norma() {
		return (float)Math.sqrt(x*x+y*y);
	}
	public final float Norma(Complejo c) {
		return (float)Math.sqrt(c.x*c.x+c.y*c.y);
	}
	// Conjugado
	public final Complejo Conjugado() {
		Complejo r = new Complejo(x,-y);
		return r;
	}
	public final Complejo Conjugado(Complejo c) {
		Complejo r = new Complejo(c.x,-c.y);
		return r;
	}
	// obligatorios (son abstractos en Number):
	public final double doubleValue() {
		return (double)Norma();
	}
	public final float floatValue() {
		return Norma();
	}
	public final int intValue() {
		return (int)Norma();
	}
	public final long longValue() {
		return (long)Norma();
	}
	public final String toString() {
		if (y&lt;0)
			return x+&quot;-i&quot;+(-y);
		else
			return x+&quot;+i&quot;+y;
	}
	// Operaciones matem&aacute;ticas
	public static final Complejo Suma(Complejo c1, Complejo c2) {
		return new Complejo(c1.x+c2.x,c1.y+c2.y);
	}
	public static final Complejo Resta(Complejo c1, Complejo c2) {
		return new Complejo(c1.x-c2.x,c1.y-c2.y);
	}
	public static final Complejo Producto(Complejo c1, Complejo c2) {
		return new Complejo(c1.x*c2.x-c1.y*c2.y,c1.x*c2.y+c1.y*c2.x);
	}
	// Nos va a venir bien para aprender excepciones...
	// como divisi&oacute;n por cero!
	public static final Complejo DivEscalar(Complejo c, float f) {
		return new Complejo(c.x/f,c.y/f);
	}
	public static final Complejo Cociente(Complejo c1, Complejo c2) {
		float x = c1.x*c2.x+c1.y*c2.y;
		float y = -c1.x*c2.y+c1.y*c2.x;
		float n = c2.x*c2.x+c2.y*c2.y;
		Complejo r = new Complejo(x,y);
		return DivEscalar(r,n);
	}
}<BR>
</FONT>
</PRE>
<P>
Podemos hacer algunos comentarios...
<P>
Primero: no hay include aqu&iacute;, ya que la &uacute;nica biblioteca
que usamos es <B>java.lang</B> y se incluye autom&aacute;ticamente.
<P>
Segundo: la clase es <FONT FACE="Arial">public final</FONT>, lo
que implica que cualquier clase en &eacute;ste u otros paquetes
puede utilizarla, pero ninguna clase puede heredarla (o sea que
es una clase est&eacute;ril...).
<P>
Hagamos un resumen de los atributos y m&eacute;todos de la clase:
<PRE>
<FONT SIZE=2>	// atributos:
		private float x;
		private float y;</FONT>
</PRE>
<P>
Siendo privados, no podemos acceder a ellos desde el exterior.
Como adem&aacute;s la clase es final, no hay forma de acceder
a <FONT FACE="Arial">x</FONT> e <FONT FACE="Arial">y</FONT>. Adem&aacute;s,
al no ser static, cada instancia de la clase tendr&aacute; su
propio <FONT FACE="Arial">x</FONT> e <FONT FACE="Arial">y</FONT>.
<PRE>
<FONT SIZE=2>	// constructores:
	public Complejo()
	public Complejo(float  rx, float iy)</FONT>
</PRE>
<P>
La clase tiene dos constructores, que se diferencian por su &quot;firma&quot;
(<I>signature</I>), o sea por la cantidad y tipo de par&aacute;metros.
El primero nos sirve para crear un objeto de tipo <B>Complejo</B>
y valor indefinido (aunque en realidad el m&eacute;todo lo inicializa
en cero); con el segundo, podemos definir el valor al crearlo.
<PRE>
<FONT SIZE=2>	// m&eacute;todos:
	public final float Norma()
	public final float Norma(Complejo c)
	public final Complejo Conjugado()
	public final Complejo Conjugado(Complejo c)</FONT>
</PRE>
<P>
Estos m&eacute;todos tambi&eacute;n son duales; cuando los usamos
sin par&aacute;metros devuelven la norma o el conjugado del objeto
individual (instancia):
<PRE>
<FONT SIZE=2>v = miComplejo.Norma();			// por ejemplo
		otroComplejo = miComplejo.Conjugado();</FONT>
</PRE>
<P>
Con par&aacute;metros, en cambio, devuelven la norma o el conjugado
del par&aacute;metro:
<PRE>
<FONT SIZE=2>		v = unComplejo.Norma(miComplejo);
		otroComplejo = unComplejo.Conjugado(miComplejo);</FONT>
</PRE>
<P>
Notar que lo siguiente es inv&aacute;lido:
<P>
<FONT FACE="Arial">  otroComplejo = Complejo.Norma(miComplejo);
// NO SE PUEDE!</FONT>
<P>
...porque el m&eacute;todo no es <I>static</I>, por lo tanto <B>debe</B>
llamarse para una instancia en particular (en este caso, <I>unComplejo</I>).
<BR>
<PRE>
<FONT SIZE=2>	// obligatorios (son abstractos en Number):
	public final double doubleValue()
	public final float floatValue()
	public final int intValue()
	public final long longValue()</FONT>
</PRE>
<P>
Estos m&eacute;todos es obligatorio definirlos, ya que en la clase
madre <I>Number</I> son m&eacute;todos abstractos, o sea que debemos
implementarlos aqu&iacute;.
<P>
Como todos los m&eacute;todos de esta clase son final, o sea que
no puede ser redefinido. No es importante en realidad puesto que
la clase no puede tener descendientes...
<PRE>
<FONT SIZE=2>	public final String toString()</FONT>
</PRE>
<P>
Este m&eacute;todo nos sirve para representar el complejo como
una cadena de caracteres, de la forma <FONT FACE="Arial">x+iy</FONT>.
<PRE>
<FONT SIZE=2>	// Operaciones matem&aacute;ticas
	public static final Complejo Suma(Complejo c1, Complejo c2)
	public static final Complejo Resta(Complejo c1, Complejo c2)
	public static final Complejo Producto(Complejo c1, Complejo c2)
	public static final Complejo DivEscalar(Complejo c, float f)
	public static final Complejo Cociente(Complejo c1, Complejo c2)</FONT>
</PRE>
<P>
Aqu&iacute; definimos varias operaciones matem&aacute;ticas. Notar
que se han definido como <FONT FACE="Arial">static</FONT>, o sea
que los m&eacute;todos son &uacute;nicos independientemente de
las instancias. Esto permite que los podamos ejecutar sobre una
instancia o directamente sobre la clase:
<PRE>
<FONT SIZE=2>miComplejo = unComplejo.Suma(comp1,comp2);	// vale
miComplejo = Complejo.Suma(comp1,comp2);		// TAMBIEN VALE!</FONT>
</PRE>
<P>
Por ejemplo, la siguiente aplicaci&oacute;n nos muestra c&oacute;mo
podemos usar algunos de estos m&eacute;todos:
<PRE>
<FONT SIZE=2>// Archivo:  Ejemplo5.java
// Compilar con: javac Ejemplo5.java
// Ejecutar con: java Ejemplo5
import java.io.*;

public class Ejemplo5 {

  public static void main(String args[]) {
    Complejo c1 = new Complejo(4,-3);
    System.out.println(c1+&quot;\tNorma=&quot;+c1.Norma());
    Complejo c2 = new Complejo(-2,5);
    System.out.println(c2+&quot;\tNorma=&quot;+c2.Norma()+&quot;\n&quot;);

    System.out.println(&quot;(&quot;+c1+&quot;)/4 :&quot;+Complejo.DivEscalar(c1,4));
    System.out.println(&quot;Suma  : &quot;+Complejo.Suma(c1,c2));
    System.out.println(&quot;Resta : &quot;+Complejo.Resta(c1,c2).toString());
    System.out.println(&quot;Multip: &quot;+Complejo.Producto(c1,c2).toString());
    System.out.println(&quot;Divis : &quot;+Complejo.Cociente(c1,c2).toString());
  }
}</FONT>
</PRE>
<P>
Hay varias cosas para notar: por ejemplo, que podemos declarar
las variables a la vez que las creamos:
<PRE>
<FONT SIZE=2>Complejo c1 = new Complejo(4,-3);</FONT>
</PRE>
<P>
<FONT FACE="Arial">c1</FONT> y <FONT FACE="Arial">c2</FONT> son
dos objetos (instancias) de la clase Complejo.
<P>
Notar tambi&eacute;n que no hace falta poner para imprimir:
<PRE>
<FONT SIZE=2>System.out.println(c1.toString().......);</FONT>
</PRE>
<P>
ya que <FONT FACE="Arial">println</FONT> autom&aacute;ticamente
usa el m&eacute;todo<FONT FACE="Arial"> toString()</FONT> de la
clase para imprimir. Basta con poner <FONT FACE="Arial">c1</FONT>,
como en el programa, aunque <FONT FACE="Arial">c1.toString()</FONT>
tambi&eacute;n es v&aacute;lido.
<P>
Tambi&eacute;n se ve el uso de los m&eacute;todos <FONT FACE="Arial">static</FONT>,
accedi&eacute;ndolos directamente por la clase, en:
<PRE>
<FONT SIZE=2>System.out.println(&quot;Suma  : &quot;+Complejo.Suma(c1,c2));</FONT>
</PRE>
<P>
Y tampoco aqu&iacute; usamos <FONT FACE="Arial">toString()</FONT>,
aunque no est&aacute; mal si se usa <FONT FACE="Arial">Complejo.Suma(c1,c2).toString()</FONT>.
<H2>Algo sobre los m&eacute;todos</H2>
<P>
Analicemos un poco ahora c&oacute;mo implementamos los m&eacute;todos
de la clase <I>Complejo</I>.
<PRE>
<FONT SIZE=2>	public final int intValue() {
		return (int)Norma();
	}</FONT>
</PRE>
<P>
Ya que no podemos convertir as&iacute; nom&aacute;s un complejo
en un entero, para implementar estos m&eacute;todos hemos elegido
usar como valor de retorno la norma del complejo. En este caso,
y dado que el m&eacute;todo <FONT FACE="Arial">Norma()</FONT>
devuelve un <FONT FACE="Arial">float</FONT>, usamos <I>typecasting</I>,
es decir, lo convertimos en entero precedi&eacute;ndolo con <FONT FACE="Arial">(int)</FONT>.
<PRE>
<FONT SIZE=2>	public final String toString() {
		if (y&lt;0)
			return x+&quot;-i&quot;+(-y);
		else
			return x+&quot;+i&quot;+y;
	}</FONT>
</PRE>
<P>
Aqu&iacute; representamos el complejo en forma de cadena de caracteres.
Hemos usado el <I>if</I> para representar adecuadamente el signo
de la parte imaginaria. Noten tambi&eacute;n la asombrosa ayuda
que nos brinda Java, al convertir autom&aacute;ticamente las variables
<FONT FACE="Arial">x</FONT> e <FONT FACE="Arial">y</FONT> a String
para la concatenaci&oacute;n (mediante el signo &quot;+&quot;)!
<PRE>
<FONT SIZE=2>	public static final Complejo Cociente(Complejo c1, Complejo c2) {
		float x = c1.x*c2.x+c1.y*c2.y;
		float y = -c1.x*c2.y+c1.y*c2.x;
		float n = c2.x*c2.x+c2.y*c2.y;
		Complejo r = new Complejo(x,y);
		return DivEscalar(r,n);
	}</FONT>
</PRE>
<P>
Aqu&iacute; tengan en cuenta que las variables <FONT FACE="Arial">x</FONT>
e <FONT FACE="Arial">y</FONT>, definidas como <I>float</I>, no
tienen nada que ver con las variables (atributos) de la clase
que est&aacute;n definidas al principio de la misma, sino que
son variables locales al m&eacute;todo.
<P>
Podemos usar <FONT FACE="Arial">return DivEscalar(r,n)</FONT>,
ya que <FONT FACE="Arial">DivEscalar</FONT> es un m&eacute;todo
propio de la clase; no hace falta poner <FONT FACE="Arial">Complejo.DivEscalar</FONT>.
<P>
Qu&eacute; pasa con <FONT FACE="Arial">r</FONT>, el new <FONT FACE="Arial">Complejo(x,y)</FONT>
que creamos? Nada; cuando un objeto no se usa m&aacute;s, el &quot;recogedor
de basura&quot; de Java lo elimina autom&aacute;ticamente (tarde
o temprano) de la memoria.
<PRE>
<FONT SIZE=2>	public final float Norma(Complejo c) {
		return (float)Math.sqrt(c.x*c.x+c.y*c.y);
	}</FONT>
</PRE>
<P>
Aqu&iacute; estamos usando otra clase, <B>Math</B>, que nos permite
realizar varias operaciones matem&aacute;ticas. Esta clase dispone
de las constantes <FONT FACE="Arial">E</FONT> y <FONT FACE="Arial">PI</FONT>,
y los m&eacute;todos:
<PRE>
<FONT SIZE=2>abs(x)			valor absoluto
acos(x)			arco coseno
asin(x)			arco seno
atan(x)			arco tangente
atan2(x,y)		componente angular de la representaci&oacute;n polar de x,y
ceil(x)			menor entero mayor que x
cos(x)			coseno
exp(x)			e<SUP>x
</SUP>floor(x)		mayor entero menor que x
IEEEremainder(x,y)	resto de la divisi&oacute;n x/y seg&uacute;n el est&aacute;ndar IEEE 754
log(x)			logaritmo natural
max(x,y)		el mayor de x e y
min(x,y)		el menor de x e y
pow(x,y)		x<SUP>y
</SUP>random()		n&uacute;mero aleatorio entre 0 y 1
rint(x)			entero m&aacute;s cercano a x (devuelve un doble)
round(x)		entero m&aacute;s cercano a x (devuelve un entero o un long)
sin(x)			seno
sqrt(x)			ra&iacute;z cuadrada
tan(x)			tangente</FONT>
</PRE>
<P>
Algunos de estos m&eacute;todos disparan <I>excepciones</I>, como
<FONT FACE="Arial">sqrt</FONT> o <FONT FACE="Arial">log</FONT>
de n&uacute;meros negativos. M&aacute;s adelante veremos c&oacute;mo
se usan las excepciones.
<P>
Otra clase que hemos estado usando mucho es la <FONT FACE="Arial">PrintStream</FONT>,
a la que pertenece el m&eacute;todo <FONT FACE="Arial">println</FONT>.
En
<PRE>
<FONT SIZE=2>		System.out.println(...)</FONT>
</PRE>
<P>
<FONT FACE="Arial">out</FONT> es un <I>atributo</I> de la clase
<FONT FACE="Arial">System</FONT>, del tipo (clase)<FONT FACE="Arial">
PrintStream</FONT>:
<PRE>
<FONT SIZE=2>public final class System extends Object
{
        // Fields
    public static PrintStream err;
    public static InputStream in;
    public static PrintStream out;

        // Methods
.............
}</FONT>
</PRE>
<P>
Veremos otras bibliotecas (para entrada/salida, gr&aacute;ficos,
etc) muy pronto. Nos vemos en el cap&iacute;tulo VII.
<BR>
<HR>
<P>
Jorge Bourdette
<P>
<A HREF="mailto:jpb@amarillas.com">jpb@amarillas.com</A>
</BODY>
</HTML>

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产精品一区一区| 精品久久久久久久久久久久久久久久久| 在线看一区二区| 久久综合九色综合97_久久久| 一区二区三区日韩精品| 国产高清在线精品| 欧美一区二区在线视频| 亚洲免费看黄网站| 国产suv精品一区二区6| 欧美一级免费大片| 亚洲资源中文字幕| 99精品欧美一区| 欧美激情一区二区在线| 免费成人在线观看视频| 欧美日韩不卡视频| 一区2区3区在线看| 97超碰欧美中文字幕| 国产偷国产偷精品高清尤物| 老司机精品视频在线| 欧美电影在线免费观看| 亚洲综合色噜噜狠狠| 99精品视频免费在线观看| 欧美激情一区不卡| 国产.欧美.日韩| 国产亚洲精久久久久久| 国产久卡久卡久卡久卡视频精品| 欧美一级片在线观看| 日本不卡一区二区| 91麻豆精品国产91久久久更新时间| 一区二区三区在线影院| 91麻豆免费观看| 亚洲男帅同性gay1069| 91免费版在线看| 亚洲精品成人悠悠色影视| 一本色道久久综合亚洲91| 一区二区日韩av| 欧美日韩在线综合| 日日夜夜免费精品| 日韩一区二区三区视频在线| 伦理电影国产精品| 26uuuu精品一区二区| 国产成人在线视频网站| 国产欧美精品国产国产专区 | 欧美一级午夜免费电影| 首页国产欧美日韩丝袜| 3atv一区二区三区| 免费成人在线视频观看| 久久午夜老司机| 不卡视频一二三| 一区二区三区自拍| 欧美夫妻性生活| 国产一区二区视频在线播放| 亚洲一区二区三区四区在线观看| 欧美老年两性高潮| 国产综合色视频| 日韩理论电影院| 欧美伦理电影网| 国产福利91精品一区| 中文字幕在线不卡一区二区三区| 色天天综合色天天久久| 日韩av中文字幕一区二区三区| 亚洲精品一区二区三区精华液 | 欧美专区日韩专区| 日韩成人dvd| 国产精品久久毛片| 欧美三级韩国三级日本三斤| 韩国成人福利片在线播放| 最好看的中文字幕久久| 欧美成人一区二区三区片免费| 国产91精品入口| 亚洲高清免费视频| 久久久久久99精品| 欧美视频在线观看一区| 国产精品123| 五月综合激情婷婷六月色窝| 久久中文字幕电影| 欧美亚洲综合在线| 国产精华液一区二区三区| 午夜在线成人av| 国产亚洲一区字幕| 欧美一级艳片视频免费观看| 99国产精品一区| 国产一区二区三区久久久| 亚洲综合免费观看高清完整版在线| 精品国产乱码久久久久久影片| 色婷婷av一区二区三区大白胸| 激情久久久久久久久久久久久久久久 | 国产亚洲精品久| 欧美一区二区三区思思人| 91色视频在线| 国产精品自在在线| 免费亚洲电影在线| 亚洲成人免费在线观看| 亚洲麻豆国产自偷在线| 国产欧美精品一区二区三区四区| 日韩欧美一区在线| 欧美猛男gaygay网站| 97se狠狠狠综合亚洲狠狠| 国产夫妻精品视频| 国产乱码字幕精品高清av| 日韩和欧美一区二区三区| 亚洲黄色免费电影| 亚洲色图丝袜美腿| 国产精品的网站| 国产精品五月天| 久久精品日产第一区二区三区高清版| 欧美r级电影在线观看| 日韩欧美另类在线| 91精品国产色综合久久| 欧美精品自拍偷拍动漫精品| 欧美在线播放高清精品| 在线免费观看视频一区| 91国偷自产一区二区三区成为亚洲经典 | 久久亚洲精品小早川怜子| 884aa四虎影成人精品一区| 欧美日韩中文字幕一区二区| 日本高清不卡aⅴ免费网站| 一本色道久久综合精品竹菊| 91视频免费看| 91福利资源站| 欧美日本在线观看| 日韩欧美国产综合| 欧美精品一区二区三区蜜桃视频| 精品久久久影院| 国产色产综合产在线视频| 国产女主播在线一区二区| 国产精品免费视频观看| 中文字幕一区不卡| 有坂深雪av一区二区精品| 亚洲一区二区综合| 美女在线观看视频一区二区| 美脚の诱脚舐め脚责91| 国产精品一区二区久久不卡 | 久久精品国产99| 国产成人午夜电影网| av成人老司机| 欧美亚洲自拍偷拍| 精品乱码亚洲一区二区不卡| 国产亚洲成年网址在线观看| 自拍偷拍亚洲欧美日韩| 亚洲成人777| 激情都市一区二区| 99re这里只有精品6| 欧美日本国产视频| 精品国产一区二区三区忘忧草| 中文字幕亚洲在| 丝袜美腿一区二区三区| 国产九色精品成人porny| 91美女精品福利| 欧美成人乱码一区二区三区| 国产精品传媒在线| 免费观看在线综合色| 91婷婷韩国欧美一区二区| 3atv一区二区三区| 最新日韩在线视频| 乱中年女人伦av一区二区| 日本精品一区二区三区高清| 久久久影视传媒| 午夜欧美在线一二页| 国产a精品视频| 欧美大尺度电影在线| 一区二区三区免费| 国产老肥熟一区二区三区| 3d动漫精品啪啪1区2区免费| 亚洲欧洲无码一区二区三区| 久久国产精品色婷婷| 在线观看亚洲成人| 国产精品青草综合久久久久99| 日韩—二三区免费观看av| 91丨porny丨国产入口| 久久九九影视网| 免播放器亚洲一区| 欧美天堂亚洲电影院在线播放| 精品国产一区二区三区忘忧草| 亚洲成人手机在线| 99精品视频在线观看| 日本一区二区三区四区| 蜜乳av一区二区| 91精品免费观看| 亚洲国产精品欧美一二99| 91首页免费视频| 亚洲图片你懂的| 成人深夜福利app| 国产人成亚洲第一网站在线播放 | 国产精品每日更新在线播放网址| 天堂av在线一区| 欧美熟乱第一页| 亚洲精品一二三四区| av一区二区三区| 中文字幕欧美国产| 成人午夜短视频| 国产精品水嫩水嫩| 国产精品亚洲成人| 久久久久国色av免费看影院| 麻豆精品视频在线观看视频| 91精品国产品国语在线不卡| 日韩国产欧美三级| 91精品国产色综合久久ai换脸| 日产国产欧美视频一区精品| 欧美日韩一区二区三区在线看|