<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss' xmlns:gd='http://schemas.google.com/g/2005' xmlns:thr='http://purl.org/syndication/thread/1.0'><id>tag:blogger.com,1999:blog-94787084995359718</id><updated>2011-04-21T21:54:30.008-03:00</updated><category term='acoplamiento'/><category term='encapsulamiento'/><category term='interfaces'/><category term='objetos'/><category term='herencia'/><category term='POO'/><category term='JAVA'/><category term='clases'/><category term='polimorfismo'/><category term='cohesion'/><category term='clases abstracta'/><title type='text'>The Spot Code</title><subtitle type='html'></subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://spotcode.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/94787084995359718/posts/default?max-results=100'/><link rel='alternate' type='text/html' href='http://spotcode.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>Rodrigo Sevil</name><uri>http://www.blogger.com/profile/09864954547925048048</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>4</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>100</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-94787084995359718.post-5687472872063747239</id><published>2008-05-21T00:52:00.001-03:00</published><updated>2008-05-21T00:52:26.729-03:00</updated><title type='text'>Seguimos con el Frame...</title><content type='html'>&lt;p&gt;Como hab&amp;#237;a prometido en el post anterior, voy a dejar como ser&amp;#237;a si la ventana no handleara m&amp;#225;s sus eventos, sino que lo haga otra clase, pero que este adentro de esa ventana. Pero a su vez aplicando un poco el concepto de herencia y clase abstracta. Si plantear&amp;#237;a este modelo para formar todas las ventanas de mi app y todas tendr&amp;#237;an la misma forma de cerrarse, abrirse, etc... podr&amp;#237;a tener una clase base abstracta de la que hereden todas mis ventanas que genere para la app, a esta clase, la declararemos abstracta ( abstract , revisar en la teor&amp;#237;a que caracteristicas tienen este tipo de clases ), Adem&amp;#225;s si vamos a tener x tipos de ventanas vamos a tener x tipos de escuchadores de eventos, porque variaran&amp;#160; seg&amp;#250;n los controles de las mismas, entonces Tendremos una clase base tambi&amp;#233;n de eventos que implemente actionListener().&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Entonces:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;public class tut1{   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public static void main(String [] Args){    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; VentanaListener Ev = new aListener();    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Ventana a = new Ventana1(Ev);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;}&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Clases:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;import java.awt.*;   &lt;br /&gt;import java.awt.event.*;    &lt;br /&gt;abstract class Ventana extends Frame implements WindowListener{&lt;/p&gt;  &lt;p&gt; public VentanaListener Eventos;&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public Ventana(){   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public Ventana(VentanaListener Eventos){   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.Eventos = Eventos;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.InitVentanaProps();    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; private void InitVentanaProps(){   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.addWindowListener(this);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.setVisible(true);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; /*WINDOWLISTENER MEMBERS*/   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public void windowDeactivated(WindowEvent We){    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public void windowActivated(WindowEvent We){    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public void windowDeiconified(WindowEvent We){    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public void windowIconified(WindowEvent We){    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public void windowClosed(WindowEvent We){    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public void windowClosing(WindowEvent We){    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; /*Evento que se dispara cuando se apreta el boton de cerrar la ventana*/    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.setVisible(false);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.dispose();    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public void windowOpened(WindowEvent We){    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;}&lt;/p&gt;  &lt;p&gt;abstract class VentanaListener implements ActionListener{   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public void actionPerformed(ActionEvent Ae){    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;}&lt;/p&gt;  &lt;p&gt;class Ventana1 extends Ventana{&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; private Button btnEjemplo = new Button(&amp;quot;asd&amp;quot;);&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public Ventana1(){   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public Ventana1(VentanaListener Eventos){   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; super(Eventos);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; SetControls();    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; private void SetControls(){   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; btnEjemplo.addActionListener(this.Eventos);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; btnEjemplo.setActionCommand(&amp;quot;btnEjemplo&amp;quot;);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.add(btnEjemplo);    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;}&lt;/p&gt;  &lt;p&gt;class aListener extends VentanaListener{   &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; public void actionPerformed(ActionEvent Ae){    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; if(Ae.getActionCommand().compareTo(&amp;quot;btnEjemplo&amp;quot;) == 0){    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; btnEjemplo_Click(Ae.getSource());    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; private void btnEjemplo_Click(Object sender){    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Button ej= (Button)sender;    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; System.out.println(ej.getActionCommand());    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; }    &lt;br /&gt;}&lt;/p&gt;  &lt;p&gt;Para que vean ventana1 hereda de ventana y sobre-escribe el constructor de ventana para luego llamarlo pas&amp;#225;ndole los eventos que va a atender y setea los controles asign&amp;#225;ndole al bot&amp;#243;n como actionlistener a los eventos que posee esa ventana, adem&amp;#225;s de darle un comando de acci&amp;#243;n al bot&amp;#243;n y agregarlo a la ventana.&lt;/p&gt;  &lt;p&gt;Cuando el bot&amp;#243;n sea cliqueado los eventos que se le asignaron a la ventana van a ser los que atiendan el mensaje, en este caso los de aListener. Vean que tambi&amp;#233;n inclu&amp;#237; en la clase un m&amp;#233;todo mas que se llama btnEjemplo_Click que recibe un Object llamado sender y cuando catcheo el evento en el Ae.getActionCommand() lo llamo pasandole como parametro el source, esto permite que yo le pueda mandar al m&amp;#233;todo la instancia del bot&amp;#243;n al cual cliquearon para despu&amp;#233;s castearlo a un bot&amp;#243;n y manejarlo como quiera...&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Una Opinion: &lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Con respecto a lo que les acabo de mostrar, esto har&amp;#237;a que la ventana sea mas &amp;quot;cohesiva&amp;quot; pero fijensen la complexi&amp;#243;n de este programita que lo &amp;#250;nico que hace es tener un bot&amp;#243;n en el cual se cliquea y en consola muestra un mensaje.&amp;#160; Lo que quiero decir es que la cohesi&amp;#243;n tampoco hay que llevarla a tanto extremo aunque se pueda, porque hay veces que tiende a dificultar las cosas(imaginense crear una clase para cada acci&amp;#243;n de una app) entonces hay que encontrar un balance en cuanto a este tema. Por ende depende de la app que se desarrolle el nivel de cohesi&amp;#243;n de sus elementos.&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Por Ultimo:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;Si hay algo que no quedo muy claro, pido disculpas porque &amp;#250;ltimamente estuve sin tiempo, si encuentran algo err&amp;#243;neo o para mejorar por favor comenten que nos va a ayudar a crecer a todos. &lt;/p&gt;  &lt;p&gt;Para la pr&amp;#243;xima se viene algo con Gr&amp;#225;ficos. ^^&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Rodrigo Sevil&lt;/p&gt;  &lt;p&gt;WH.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/94787084995359718-5687472872063747239?l=spotcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spotcode.blogspot.com/feeds/5687472872063747239/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=94787084995359718&amp;postID=5687472872063747239' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/94787084995359718/posts/default/5687472872063747239'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/94787084995359718/posts/default/5687472872063747239'/><link rel='alternate' type='text/html' href='http://spotcode.blogspot.com/2008/05/seguimos-con-el-frame.html' title='Seguimos con el Frame...'/><author><name>Rodrigo Sevil</name><uri>http://www.blogger.com/profile/09864954547925048048</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-94787084995359718.post-7665743636067733549</id><published>2008-05-15T00:12:00.001-03:00</published><updated>2008-05-15T00:12:34.913-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cohesion'/><category scheme='http://www.blogger.com/atom/ns#' term='polimorfismo'/><category scheme='http://www.blogger.com/atom/ns#' term='objetos'/><category scheme='http://www.blogger.com/atom/ns#' term='acoplamiento'/><category scheme='http://www.blogger.com/atom/ns#' term='clases'/><category scheme='http://www.blogger.com/atom/ns#' term='POO'/><category scheme='http://www.blogger.com/atom/ns#' term='encapsulamiento'/><category scheme='http://www.blogger.com/atom/ns#' term='herencia'/><category scheme='http://www.blogger.com/atom/ns#' term='interfaces'/><category scheme='http://www.blogger.com/atom/ns#' term='clases abstracta'/><category scheme='http://www.blogger.com/atom/ns#' term='JAVA'/><title type='text'>Programación POO en Java</title><content type='html'>&lt;p&gt;Disculpen por la Demora... No Tuve tiempo de atender el blog. Pero ahora volvi.&lt;/p&gt;  &lt;p&gt;Ahora que tenemos el respaldo te&amp;#243;rico, podemos empezar a programar con una forma de ver a los objetos diferente. Podemos empezar a programar de una manera en la cual estos realicen las tareas para las que fueron creados, utilicen interfaces y/o hereden de otra clase, etc.&lt;/p&gt;  &lt;p&gt;Por ahora, vamos a utilizar awt de java para crear nuestras apps. Con este tipo de interfaz surgen varios problemas a la hora de programar, ya que a un programador que no aplique bien las interfaces le puede causar problemas como por ejemplo tener crear muchas clases por cada bot&amp;#243;n al que le suscriba un actionListener.&lt;/p&gt;  &lt;p&gt;Por decir todo lo que dije arriba, no significa que esta sea la &amp;#250;nica forma de programar, nada m&amp;#225;s les estoy dando mi punto de vista de como por ahora en mis comienzos empezar a programar y que sea f&amp;#225;cil y sencillo.&lt;/p&gt;  &lt;p&gt;Bueno, primero, ninguna clase que no sea meramente ejecutable, debe tener atributos o clases definidas adentro, un ejemplo de esto seria crear una clase x que extienda Frame y que adentro de esa misma clase declaremos el main de la app. Esto elimina toda chance de que una clase sea cohesiva y adem&amp;#225;s dificulta la herencia, ya que todas las subclases tendr&amp;#237;an un main. &amp;#191;Cu&amp;#225;l se ejecutar&amp;#237;a? esa es la pregunta...&lt;/p&gt;  &lt;p&gt;Partiendo de esto declararemos 1 clase ejecutable por cada app que hagamos y las dem&amp;#225;s clases que declaremos no tendr&amp;#225;n un main adentro, para que cuando sea necesario podamos heredar de ellas y tambi&amp;#233;n se mantengan cohesivas.&lt;/p&gt;  &lt;p&gt;En java, las clases deben tener el mismo nombre que el archivo en el que fueron guardadas, por lo menos las ejecutables.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Entonces:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;&lt;em&gt;Clase Ejecutable:&lt;/em&gt;&lt;/p&gt;  &lt;p&gt;Nombre del Archivo: tut1.java&lt;/p&gt;  &lt;p&gt;Codigo:&lt;/p&gt;  &lt;p&gt;public class tut1{    &lt;br /&gt;&amp;#160; public static void main(String [] Args){&lt;/p&gt;  &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //Lo unico que hago es instanciar una ventana y listo...    &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; Ventana a = new Ventana();     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160; }     &lt;br /&gt;}&lt;/p&gt;  &lt;p&gt;&lt;strong&gt;Despu&amp;#233;s Creo Otra Clase en la misma Carpeta:&lt;/strong&gt;&lt;/p&gt;  &lt;p&gt;import java.awt.*;    &lt;br /&gt;import java.awt.event.*;&lt;/p&gt;  &lt;p&gt;class Ventana extends Frame implements ActionListener, WindowListener{&lt;/p&gt;  &lt;p&gt;private Button btnEjemplo = new Button();&lt;/p&gt;  &lt;blockquote&gt;   &lt;p&gt;public Ventana(){      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; /*Como la ventana implementa la interfaz actionListener,       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; esta misma va a poder catchear los eventos de los botones       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; que esten dentro de ella*/       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; btnEjemplo.addActionListener(this);&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;     &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.AddControls();       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.InitVentanaProps();       &lt;br /&gt;}&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;private void InitVentanaProps(){      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.addWindowListener(this);       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.setVisible(true);       &lt;br /&gt;}&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;private void AddControls(){      &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.add(btnEjemplo);       &lt;br /&gt;}&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;     &lt;br /&gt;/*ACTIONLISTENER MEMBERS*/       &lt;br /&gt;public void actionPerformed(ActionEvent Ae){&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;&amp;#160; /*Atender Eventos disparados por los botones*/&lt;/p&gt;    &lt;p&gt;     &lt;br /&gt;&amp;#160; /*Ae.getSource() obtiene la instancia del que disparo el evento       &lt;br /&gt;&amp;#160; , solo basta con compara por un objeto para saber que hacer*/       &lt;br /&gt;&amp;#160; if (Ae.getSource() == btnEjemplo)       &lt;br /&gt;&amp;#160; {       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //Hacer Algo...&lt;/p&gt;    &lt;p&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; //System.out.println(&amp;quot;Sarasa&amp;quot;);      &lt;br /&gt;&amp;#160; }&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;}&lt;/p&gt; &lt;/blockquote&gt;  &lt;blockquote&gt;   &lt;p&gt;/*WINDOWLISTENER MEMBERS*/      &lt;br /&gt;public void windowDeactivated(WindowEvent We){       &lt;br /&gt;}       &lt;br /&gt;public void windowActivated(WindowEvent We){       &lt;br /&gt;}       &lt;br /&gt;public void windowDeiconified(WindowEvent We){       &lt;br /&gt;}       &lt;br /&gt;public void windowIconified(WindowEvent We){       &lt;br /&gt;}       &lt;br /&gt;public void windowClosed(WindowEvent We){       &lt;br /&gt;}       &lt;br /&gt;public void windowClosing(WindowEvent We){       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; /*Evento que se dispara cuando se apreta el boton de cerrar la ventana*/       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.setVisible(false);       &lt;br /&gt;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160;&amp;#160; this.dispose();       &lt;br /&gt;}       &lt;br /&gt;public void windowOpened(WindowEvent We){       &lt;br /&gt;}&lt;/p&gt; &lt;/blockquote&gt;  &lt;p&gt;}&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Este ejemplo de clase que hereda de frame e implementa window y action listener no es necesaria la creacion de varias clases que implementen algun listener ya que la ventana misma ya la implementa, gracias a esto con el getSource() de un ActionEvent se puede identificar quien es el que dispara el evento. Otra manera interesante de hacer esto seria crear otra clase que se encargue de tener los metodos con la logica que realizaria cada bot&amp;#243;n y asi poder &amp;quot;sacar&amp;quot; estos m&amp;#233;todos de ventana, haciendo que esta sea mas cohesiva, pero a su vez se sigue &amp;quot;encargando&amp;quot; internamente de sus eventos, Eso es lo que voy a postear la proxima vez.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;PD: Otra manera de poder cerrar la ventana es con el window adapter.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Rodrigo Sevil&lt;/p&gt;  &lt;p&gt;WH.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/94787084995359718-7665743636067733549?l=spotcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spotcode.blogspot.com/feeds/7665743636067733549/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=94787084995359718&amp;postID=7665743636067733549' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/94787084995359718/posts/default/7665743636067733549'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/94787084995359718/posts/default/7665743636067733549'/><link rel='alternate' type='text/html' href='http://spotcode.blogspot.com/2008/05/programacin-poo-en-java.html' title='Programación POO en Java'/><author><name>Rodrigo Sevil</name><uri>http://www.blogger.com/profile/09864954547925048048</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-94787084995359718.post-8068097453882993540</id><published>2008-05-06T20:07:00.001-03:00</published><updated>2008-05-06T20:07:47.960-03:00</updated><title type='text'>Instalando el TextPad:</title><content type='html'>&lt;p&gt;Antes que nada quer&amp;#237;a agradecerle a Sergio Ioppolo autor del &lt;a href="http://sdilabo.blogspot.com"&gt;Blog del Laboratorio&lt;/a&gt; y Profesor de la Materia de Laboratorio y Programaci&amp;#243;n en la Escuela donde estudio por su colaboraci&amp;#243;n para que este proyecto pueda crecer.&lt;/p&gt;  &lt;p&gt;&amp;#160;&lt;/p&gt;  &lt;p&gt;Bueno ahora que ya tenemos un respaldo te&amp;#243;rico sobre lo que vamos a programar, necesitaremos un ambiente de desarrollo para poder compilar y ejecutar nuestras apps nuevas. Como por este a&amp;#241;o voy a basar la mayor&amp;#237;a de los post sobre programaci&amp;#243;n en java y porque se que muchos tuvieron problemas para poder instalarlo, les voy a dejar un tutorial para poder instalar el Textpad y utilizarlo con el JDK para poder comenzar a programar libremente sin que se les presente alguna dificultad para poder instalarlo.&lt;/p&gt;  &lt;p&gt;Por ahora utilizaremos el TextPad ya que para los que reci&amp;#233;n comienzan a programar puede ser muy dificultoso aprender en un ambiente de desarrollo muy grande como lo seria el eclipse por el momento.&lt;/p&gt;  &lt;p&gt;Hay dos Maneras:&lt;/p&gt;  &lt;p&gt;Bajen el TextPad de la pagina&amp;#160; &lt;a href="http://www.textpad.com/download/index.html"&gt;TextPad.Com&lt;/a&gt;. Luego de &lt;a href="http://java.sun.com/javase/downloads/index.jsp"&gt;Java.sun.com&lt;/a&gt; descarguen el JDK 6 UPDATE 6. Si no tienen la Java Virtual Machine cosa que dudo, tambi&amp;#233;n podr&amp;#225;n descargarla desde esa misma p&amp;#225;gina.&lt;/p&gt;  &lt;p&gt;Una vez que hallan instalado los dos programas, van a tener que configurar el Textpad para que como herramienta de compilaci&amp;#243;n utilice los comandos del JDK.&lt;/p&gt;  &lt;p&gt;Entonces, abran el Textpad vayan a configuraci&amp;#243;n, preferencias. En la pantalla que les abre en el listado de preferencias busquen Herramientas/Tools y seleccionenlo. En la misma pantalla a la izquierda busquen el bot&amp;#243;n Agregar/Add y haganle click. En la lista que se les despliega elijan la que dice &amp;quot;Java SDK Commands&amp;quot; y apliquen y acepten y listo.&lt;/p&gt;  &lt;p&gt;Para poder Compilar tienen que apretar Ctrl+1 y para ejecutar Ctrl+2.&lt;/p&gt;  &lt;p&gt;La otra Manera es bajandose del Blog del Laboratorio los archivos: &lt;a href="http://sdilabo.blogspot.com/2005/04/descargas.html"&gt;El Laboratorio&lt;/a&gt;. y siguiendo los pasos de congfiguraci&amp;#243;n que escrib&amp;#237; arriba.&lt;/p&gt;  &lt;p&gt;El Help recomiendo que se lo descarguen tambi&amp;#233;n ya que lo van a necesitar, y pueden encontrarlo en el Blog de Labo.&lt;/p&gt;  &lt;p&gt;En el pr&amp;#243;ximo post ya empezaremos a ver desde como declarar una clase hasta armar un Frame entero de una manera que este se encargue de todos los eventos que sucedan en &amp;#233;l.&lt;/p&gt;  &lt;p&gt;Rodrigo Sevil.&lt;/p&gt;  &lt;p&gt;WH.&lt;/p&gt;  &lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/94787084995359718-8068097453882993540?l=spotcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spotcode.blogspot.com/feeds/8068097453882993540/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=94787084995359718&amp;postID=8068097453882993540' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/94787084995359718/posts/default/8068097453882993540'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/94787084995359718/posts/default/8068097453882993540'/><link rel='alternate' type='text/html' href='http://spotcode.blogspot.com/2008/05/instalando-el-textpad.html' title='Instalando el TextPad:'/><author><name>Rodrigo Sevil</name><uri>http://www.blogger.com/profile/09864954547925048048</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry><entry><id>tag:blogger.com,1999:blog-94787084995359718.post-3433318449156699864</id><published>2008-05-05T00:55:00.004-03:00</published><updated>2008-05-05T02:30:56.090-03:00</updated><category scheme='http://www.blogger.com/atom/ns#' term='cohesion'/><category scheme='http://www.blogger.com/atom/ns#' term='polimorfismo'/><category scheme='http://www.blogger.com/atom/ns#' term='objetos'/><category scheme='http://www.blogger.com/atom/ns#' term='acoplamiento'/><category scheme='http://www.blogger.com/atom/ns#' term='clases'/><category scheme='http://www.blogger.com/atom/ns#' term='POO'/><category scheme='http://www.blogger.com/atom/ns#' term='encapsulamiento'/><category scheme='http://www.blogger.com/atom/ns#' term='herencia'/><category scheme='http://www.blogger.com/atom/ns#' term='interfaces'/><category scheme='http://www.blogger.com/atom/ns#' term='clases abstracta'/><title type='text'>Principios y Definiciones</title><content type='html'>&lt;span style="" lang="ES"&gt;Bueno para empezar voy a dejar los principios y definiciones basicas sobre La Programacion Orientada a Objetos (POO):&lt;br /&gt;&lt;br /&gt;La Programacion Orientada a Objetos permite modelar la realidad, e de ahi que un modelo es la representacion limitada de alguna parte de la realidad, o de un sistema real.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Objetos:&lt;/b&gt;&lt;br /&gt;&lt;br /&gt;Un Objeto es la Instancia de una clase, las clase es el molde o plantilla donde se pueden modelar los Objetos. Aqui se definiran los atributos, pero no los valores de los mismos.&lt;br /&gt;Las Clases pueden ser instanciables o no, a aquellas que no lo son se las llama Abstractas y se utilizan como clases base de una jerarquía de herencia. Estas son compuestas por métodos abstractos que se definen en las clases base y si o si deben ser implementados en las clases derivadas de esta. Si una clase tienen un método abstracto obligatoriamente debe ser una clase abstracta.&lt;br /&gt;&lt;br /&gt;Se dice por definicion que un objeto tiene:&lt;br /&gt;Estado: Guarda en sí mismo la información que le corresponde.&lt;br /&gt;&lt;br /&gt;Comportamiento: Es la capacidad de un objeto de hacer cosas o interactuar con otros&lt;br /&gt;objetos(acciones). Depende del Estado.&lt;br /&gt;&lt;br /&gt;Identidad: Unicidad, cada objeto es unico, no hay 2 objetos iguales, y esto es por más que&lt;br /&gt;pertenescan a la misma clase.&lt;br /&gt;&lt;br /&gt;El estado de los objetos está en los Atributos y el Comportamiento está en los Métodos.&lt;br /&gt;&lt;br /&gt;Los objetos poseen varias características:&lt;br /&gt;Herencia: Es la capacidad de un objeto de heredar atributos y métodos de otra clase, es decir&lt;br /&gt;es la propiedad de definir una clase a partir de otra. En la mayoria de los lenguajes actuales,&lt;br /&gt;quitando de la lista al C++, ninguno soporta herencia multiple, es decir solo se puede heredar&lt;br /&gt;de una sola clase.&lt;br /&gt;&lt;br /&gt;Polimorfismo: Es la propiedad que tienen los objetos de poder comportarse especificamente&lt;br /&gt;por más que se los tratase genéricamente. Sin herencia no existiría el polimorfismo.&lt;br /&gt;&lt;br /&gt;Encapsulamiento: El objeto no debe mostrar o exponer su estado sino a través de sus métodos.&lt;br /&gt;El estado de un objeto es propio de sí mismo.&lt;br /&gt;&lt;br /&gt;Interfaz de un Objeto: Son las acciones(métodos) publicas de un objeto. Esto quiere decir&lt;br /&gt;que cualquier otro objetos puede verlos y utilizarlos.&lt;br /&gt;&lt;br /&gt;Mensajes: Es la manera de comunicacion entre los objetos.&lt;br /&gt;&lt;br /&gt;Si quieren profundizar sobre todos estos temas y otros más como la cardinalidad que es importante, vean este link:&lt;br /&gt;&lt;a href="http://es.wikipedia.org/wiki/Objetos_%28programaci%C3%B3n_orientada_a_objetos%29#Relaciones_entre_objetos"&gt;Teoría de Objetos&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Interfaces:&lt;/b&gt;&lt;br /&gt;Es un contrato al cual se tienen que adherir las clases que la implementan. Es decir que si una clase utiliza una interfaz tiene que implementar TODOS los métodos que declara esa interfaz.&lt;br /&gt;Una Interfaz no tiene estado, comportamiento ni unicidad, ya que no se puede instanciar, las interfaces sirven para poder darle un comportamiento especifico a los objetos que la implementan, pudiendo estos utilizar varias interfaces a la vez.&lt;br /&gt;&lt;br /&gt;Si quieren saber un poco mas sobre interfaces:&lt;br /&gt;&lt;a href="http://www.php-es.com/language.oop5.interfaces.html"&gt;Teoría Interfaces&lt;/a&gt;&lt;br /&gt;&lt;a href="http://64.233.169.104/search?q=cache:Nk6yrpAXXC0J:www.cs.buap.mx/~dpinto/semadoo/mario.pdf+interfaces+de+objetos&amp;hl=es&amp;ct=clnk&amp;cd=10&amp;gl=ar&amp;client=firefox-a"&gt;Teoría Interfaces 2&lt;/a&gt;&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Clases Abstractas vs Interfaces:&lt;/b&gt;&lt;br /&gt;La diferencia entre clases abstractas e interfaces es más que nada conceptual. Debido a lo anteriormente explicado en la herencia de las clases, para cuando se quiere compartir solo un comportamiento utilizaremos interfaces y cuando se quiere compartir también estado usaremos herencia.&lt;br /&gt;&lt;br /&gt;&lt;b&gt;Conceptos sobre la buena programación:&lt;/b&gt;&lt;br /&gt;Hay dos conceptos básicos a saber sobre como programar POO.&lt;br /&gt;Acoplamiento: Mide el grado de relación y/o dependencia que tienen 2 o más componentes u objetos entre sí.&lt;br /&gt;El acoplamiento se da fuera del objeto mismo, tiene que ver con la dependencia que él tiene de los que lo rodean o que los que lo rodean tienen de él.&lt;br /&gt;&lt;br /&gt;Cohesión: Mide el grado de relación que tienen los miembros de un mismo componente para lograr cumplir con el objetivo o responsabilidad del mismo. Es decir la relación que poseen todos sus métodos para cumplir un mismo fin conciso. Seria lógico decir: "Cuanto tiene que ver el objeto con su objetivo o responsabilidad propuesta". Sucede dentro del objeto.&lt;br /&gt;&lt;br /&gt;Aca Termina todo lo básico sobre POO. En el Proximo post ya van a poder ver algunos ejemplos de código hechos en java.&lt;br /&gt;&lt;br /&gt;Ro Sevil&lt;br /&gt;WH.&lt;br /&gt;&lt;/span&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/94787084995359718-3433318449156699864?l=spotcode.blogspot.com' alt='' /&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://spotcode.blogspot.com/feeds/3433318449156699864/comments/default' title='Comentarios de la entrada'/><link rel='replies' type='text/html' href='http://www.blogger.com/comment.g?blogID=94787084995359718&amp;postID=3433318449156699864' title='0 Comentarios'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/94787084995359718/posts/default/3433318449156699864'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/94787084995359718/posts/default/3433318449156699864'/><link rel='alternate' type='text/html' href='http://spotcode.blogspot.com/2008/05/principios-y-definiciones.html' title='Principios y Definiciones'/><author><name>Rodrigo Sevil</name><uri>http://www.blogger.com/profile/09864954547925048048</uri><email>noreply@blogger.com</email><gd:image rel='http://schemas.google.com/g/2005#thumbnail' width='16' height='16' src='http://img2.blogblog.com/img/b16-rounded.gif'/></author><thr:total>0</thr:total></entry></feed>
