18:29:17 bueno, estoy listo para volver a las andadas 18:29:41 antes de que todo se vaya de mi celebro como si de un suspiro se tratara... 18:29:55 pues venga ponte con la OO 18:29:59 es lo que toca xD 18:30:27 ok 18:30:30 OO al poder 18:30:37 veras que es facil 18:30:44 eso espero ¬¬ 18:30:47 venga abre un script nuevo 18:30:53 vamos a empezas con la facil 18:30:54 preparado 18:31:05 aha 18:32:31 invento algo, o tienes alguna idea adri 18:32:38 no espera 18:32:42 que vas a inventar xD 18:32:50 vamos a ver te explico 18:32:57 la programacion orientada a objetos 18:33:07 es como su propio nombre indica 18:33:14 todo son objetos 18:33:25 imagina objetos como los de la vida cotidiana 18:33:32 un altavoz, una lampara, un reloj 18:33:36 etc 18:33:41 si 18:33:57 vale cojamas un objeto, pongamos una radios 18:33:59 ok? 18:34:12 si 18:34:43 una radio tiene algo para sintonizar una emisora tiene una frecuencia 18:34:53 y luego tambien tiene un volumen 18:34:59 claro 18:35:02 esto son propiedades 18:35:09 por ejemplo, la frecuencia puede ser 18:35:13 la 94.4 18:35:19 y el volumen = 32 18:35:34 eso decimos que son propiedades del objeto 18:35:45 ok, propiedades 18:35:52 pero tu como usuario de la radio 18:35:55 cosas que puede hace run objeto 18:36:17 no sabes como internamente se sube o baja el volumen o la frecuencia verdad? 18:36:23 tu simplemente apretas un boton 18:36:35 y este se encarga de cambiar el volumen no? 18:36:36 si eres un ignorante en temas de elctronica, si 18:36:39 si si 18:36:50 bueno aunque sepas como lo hace 18:36:54 una vez hecha la radio 18:36:58 no lo estas pensando 18:37:02 simplemente te limitas 18:37:05 a usar los botones 18:37:13 esto es lo que se llama encapsulamiento 18:37:15 si 18:37:20 aha 18:37:23 es decir apretas un boton que hace una funcion 18:37:28 y te olvidas del resto 18:37:46 los botones de subir y bajar son los llamados metodos del objeto 18:38:05 piensalo en un metodo como algo que realiza una tarea sobre el objeto 18:38:08 en nuestro caso 18:38:09 como scripts del objeto, funciones 18:38:20 olvidate de la programacion por ahora 18:38:24 quedate con la idea 18:38:25 ok 18:38:29 si, me la queod 18:38:40 vale esto es lo basico de los objetos 18:38:47 metodos, son cosas que hace un objeto, y propiedades, caracteristicas suyas 18:38:53 exacto 18:39:02 entiendo 18:39:08 vale pues vamos a programar nuestra radio 18:39:21 los objetos se definen mediante clases 18:39:37 las clases es un objeto generico del que se pueden hacer "copias" 18:39:45 es decir, tu construyes una clase radio 18:39:59 y luego puedes a partir de ella crear todos los objetos radios que quieras 18:40:04 ok 18:40:12 como en las lenguas, nombre spropios y comunes 18:40:15 esa es la idea n? 18:40:27 mmm quedate mas con la idea de un sello 18:40:36 tu tienes la cosa esa que mojas en tinta 18:40:44 y puedes poner todos los sellos que quieras 18:40:56 si 18:40:58 la clase fabrica objetos por asi decirlo 18:41:15 vale, vamos a crear nuestra radio 18:41:28 class Radio: 18:41:43 eso crea un objeto 18:41:56 person, una clase 18:42:01 con la que se puede hacer objetos 18:43:11 lo leo y no lo entiendo, adri 18:43:24 class Radio: crea una clase llamada radio 18:43:33 si 18:43:35 imagian 18:43:37 que crea 18:43:41 una carcasa 18:43:44 pero no crea un objeto n? 18:43:45 sin ninguna funcionalidad 18:43:56 no, simplemente crea una fabrica de radios 18:44:01 que hace radios inutiles 18:44:15 aha 18:44:16 ok 18:44:18 igual que las funciones 18:44:22 tu creas una 18:44:26 pero hasta que no la llamas 18:44:29 no se ejecuta 18:44:34 si si 18:45:59 vale 18:46:06 escribe lo siguiente en tu script 18:46:06 understood 18:46:08 class Radio: 18:46:08 def __init__(self): 18:46:08 self.volumen = 10 18:46:08 self.frecuencia = 90 18:46:34 ya? 18:47:04 si 18:47:48 vale 18:48:00 def __init__(self) 18:48:05 es un metodo 18:48:18 que como vimos antes cumple una funcion del objeto 18:48:22 en este caso 18:48:27 __init__ 18:48:30 es un metodo es pecial 18:48:40 porque inicializa el objeto 18:48:52 es decir es lo que se ejecuta cuando se crea el objeto 18:48:56 ok 18:48:59 como se que no habras entendido nada 18:49:05 pera pera 18:49:08 el init 18:49:19 __init__ 18:49:21 crea variables y demas caracteristicas, para que queden grabadas en memoria 18:49:31 con dos barras al principio y al final 18:49:34 si no se inicia, no carga las cosas, por ende la clase, y no ocupa memoria 18:49:45 por ende, se optimiza bastante 18:49:47 es algo asi? 18:49:50 no 18:49:55 dix 18:49:57 x'D 18:50:05 ese metodo se llama cuando se crea el objeto se ejecuta lo que haya en su cuerpo 18:50:09 eso es aprox lo que pensaba que era 18:50:10 como si de una funcion se tratase 18:50:14 ok 18:50:20 pero veamoslo creando un objeto 18:50:24 simplemente al leer la clase ejecuta ese metodo 18:50:33 vamos a crear un objeto radio 18:50:43 debajo de la clase y fuera de ella pon 18:50:50 mi_radio = Radio() 18:51:13 en el momento de crearse esa linea 18:51:20 es cuando se ejecuta el metodo init 18:51:27 ess decir en nuestro caso 18:51:38 las dos asignaciones de variable 18:51:54 puedes probar a mostrar las propiedades de nuestra radio 18:52:00 pon otra linea con: 18:52:06 print mi_radio.volumen 18:52:07 o 18:52:15 print mi_radio.frecuencia 18:52:29 y veras que puedes acceder a las propiedades del objeto 18:52:39 tambien puedes cambiar sus valores 18:52:48 mi_radio.volumen = 45 18:52:51 etc 18:52:59 comprendes esto? 18:53:03 si! 18:53:13 me recuerda 18:53:20 a las estructuras que me contaste 18:53:20 x'D 18:53:29 se parecen bastante 18:53:33 hasta aqui lo entiendo 18:53:35 vale 18:53:51 pero en este caso acceder a las propiedades es facil 18:53:57 hay veces que no es tan trivial 18:54:08 y es mejor hacer "botones" para nuestra radio 18:54:09 aha 18:54:12 por ejemplo 18:54:28 vamos a hacer uno para subir el volumen 18:54:29 ok? 18:54:43 let's do it! 18:54:44 x'd 18:55:01 seria.... un metodo 18:55:09 de la class radio 18:55:32 exacto 18:55:36 class Radio: 18:55:36 def __init__(self): 18:55:36 self.volumen = 10 18:55:36 self.frecuencia = 90 18:55:36 18:55:36 def subir_volumen(self): 18:55:36 self.volumen += 1 18:55:36 mi_radio = Radio() 18:55:36 print mi_radio.volumen 18:55:36 mi_radio.subir_volumen() 18:55:36 print mi_radio.volumen 18:55:45 ahi tienes el ejemplo 18:55:55 ves en ves de trabajar con las pripiedades 18:56:01 creamos un metodo que sube el volumen 18:56:04 aha 18:56:13 vale 18:56:18 hazme tu uno que lo baje 18:56:23 ok sir 18:56:23 otro que suba la frecuencia 18:56:28 y otro que la baje 18:56:29 xD 18:56:31 oki 18:57:00 pero adri 18:57:09 en el () del def 18:57:19 no seria necesario asignarle el volumen 18:57:26 ya que es una variable que se usa? 18:58:03 no, para eso esta el self 18:58:19 date cuenta que tanto el init como subir_volumen 18:58:26 reciben un parametro llamado self 18:58:35 self es el objeto en si mismo 18:58:47 que se de clara cuando se crea 18:58:52 es decir cuando creas 18:58:58 mi_radio = Radio() 18:59:05 self pasa a ser mi_radio 18:59:12 data cuenta que en el init haces 18:59:16 self.volumen = 10 18:59:17 es decir 18:59:23 mi_radio.volumen = 10 18:59:35 ese mismo parametro se lo pasas a otros metodos 18:59:45 a ok 18:59:46 que contienen todas las variables que contiene la clase 18:59:57 por eso poniendo delf, ya cargas todas las variables 19:00:02 para su uso y manipulacion 19:00:12 respuesta corta: si 19:00:15 self* 19:00:22 respuesta larga: ya veremos mas adelante 19:00:22 xD 19:00:33 hombre, ya sabes que lo digo sin ser preciso 19:00:40 no puedo serlo en estos momentos x'D 19:01:17 crea esos metodos 19:02:50 http://pastebin.com/sUQyLxQW 19:02:51 ale 19:03:11 es util el netbeans, te reconoce las caracteristicas / metodos, para trabajos repetitivos 19:03:20 seleccionas el metodo de la lista y ya :D 19:03:26 si, facilita la cosa xD 19:03:40 ey mira hace 20 minutos no sabias nada de OO 19:03:44 y ya tienes una radio 19:03:49 que tiene dos propiedades 19:04:03 eh eh, por mas que intento no me sintoniza nada eh x?D 19:04:04 y a la que puedes subir/bajar el volumen y la frecuencia 19:04:08 xD 19:04:09 aha 19:04:32 mira la utilidad ahora imagina que me pasas esa radio para yo usarla en mis programas 19:04:35 creo una radio 19:04:43 radio_adri = Radio() 19:04:55 y yo no tengo saber como esta hecha 19:05:02 solo necesito saber que para bajar el volumen 19:05:04 puedo hacer 19:05:15 radio_adri.bajar_volumen() 19:05:21 y no me preocupo por mas 19:05:37 ah, por eso en el proyecto ese de plataformas 19:05:42 cada clase va en un archivo n? 19:05:56 puedes meterlo todo junto 19:06:04 peor mejor meter cada clase en un modulo independiente 19:06:15 hay que hacerlas lo mas independiente posibles 19:06:16 ok, modulos es la palabra 19:06:28 no me tientes (notese la ironia) 19:06:30 x'D 19:06:43 vale vamos a darle mas funcionalidad a nuestra radio 19:06:52 ok 19:07:06 cuando la creamos seria bueno elegir la frecuencia y el volumen con el que se inicializa no? 19:07:18 si 19:07:30 crees que sabrias hacerlo? 19:07:39 es muy parecido a los parametros de las funciones 19:07:47 voy a toquetear un poco 19:07:53 algo encontrare 19:08:00 no busques 19:08:03 usa la logica 19:08:08 sino te explico 19:09:12 class Radio: 19:09:12 def __init__(self, vol, frec): 19:09:12 self.volumen = vol 19:09:12 self.frecuencia = frec 19:09:12 19:09:12 def subir_volumen(self): 19:09:12 self.volumen += 1 19:09:12 mi_radio = Radio(25, 32.3) 19:09:12 print mi_radio.volumen 19:09:26 ahi lo tienes, si no lo ves, te lo explico 19:09:50 lo veo 19:09:58 entiendo como funciona 19:10:02 pero no le veo la logica 19:10:13 xD 19:10:13 asignas una propiedad a una variable 19:10:21 y esa variable es la que coge el numero 19:10:27 coje* 19:10:32 coge 19:10:34 o como se diga... x'D 19:10:34 xD 19:10:39 a vale vale 19:10:40 x'D 19:10:57 son parametros 19:10:58 es deicr 19:11:07 tu creas dos parametros vol y frec 19:11:16 y eso son los valores que le das a las propiedades 19:11:29 ok 19:11:43 vale 19:11:44 y si al crear un objeto radio 19:11:56 no pones nada en os parametros? 19:12:13 ajam buena pregunta 19:12:19 en este caso daria error 19:12:34 que solucionaremos con los parametros por defecto 19:12:39 pondriamos: 19:12:54 def __init__(self, vol=10, frec=0.0): 19:13:05 en caso de crear el objeto de esta menera: 19:13:12 mi_radio = Radio() 19:13:27 al no poner parametros vol valdria 10 19:13:34 y frec 0.0 19:13:54 ok 19:13:56 esto nos deja definir tambien solo uno, por ejemplo 19:14:05 es interesante poner siempre unos parametros por defecto 19:14:10 mi_radio = Radio(15) 19:14:12 en este caso 19:14:24 el volumen vale 15 y la frecuencia 0.0 19:14:37 que pasa si queremos solo darle el valor a la frecuencia 19:14:44 pues habria que especificar 19:14:59 mi_radio = Radio(frec=93.3) 19:15:07 ok 19:15:11 y el volumen valdria 10 (valor por defecto= 19:15:15 entiendo 19:15:17 y la frecuencia el valor pasado 19:15:18 ok 19:15:42 bueno ahora con el mismo metodo 19:15:50 hazlo en subir_volumen() 19:16:04 es decir haz que pueda recibir un valor para subirlo tal cantidad 19:16:11 y si no se especifica 19:16:16 que le suba uno como hasta ahora 19:16:22 ok 19:17:39 cuando pones los parametros predefinidos 19:17:49 los pones con el .0 19:17:58 eso es porque asignas las variables com float? 19:18:05 como* 19:18:19 si bueno era por hacerlo con la similitud de uan radio de verdad 19:18:31 quiero decir 19:18:33 donde la frecuencia viene por 90.4, 104.4 19:18:34 xD 19:18:45 si fuera 10 y 0 19:18:49 seria lo mismo que poner 19:18:53 10.0 y 0.0 19:18:54 ? 19:19:00 en el primer caso son int 19:19:04 en el segundo float 19:19:14 aunque python permite cambiar facilmente de tipo de datro 19:19:43 si hace un: 19:19:48 a = 10 19:19:51 type(a) 19:19:55 y luego 19:19:57 un 19:20:01 b = 10.0 19:20:04 type(b) 19:20:09 en un interprete 19:20:15 veras que el primero devuelve int 19:20:18 y el segundo float 19:21:24 aha 19:21:32 el metodo ya lo he hecho, que era sencillo 19:21:36 a verlo 19:21:37 ahora falta meterle que si no ponga 1 19:21:43 pero en este caso, no hace ni falta 19:21:50 quiero decir, siempre te pedira una cantidad 19:21:51 mira 19:22:01 def subir_volumen(self): 19:22:02 increm_volumen = input ("Cuantas unidades quiere incrementar el volumen: ") 19:22:02 self.volumen += increm_volumen 19:22:18 no no no! dix 19:22:20 por dios! no! 19:22:21 xDD 19:22:27 .. 19:22:31 si es lo que me has pedido n? 19:22:41 que reciba una cantidad 19:22:45 los metodos los creamos para nosotros programadores no para interactuar con el usuario de momento 19:22:51 es decir lo que quiero 19:22:55 ah.... 19:22:56 es que yo puede hacer 19:23:08 mi_radio.subir_volumen(15) 19:23:15 y me suba el volumen 15 puntos 19:23:16 o hacer 19:23:26 mi_radio.bajar_volumen() 19:23:29 y me lo baje solo en 1 19:23:34 ahaç 19:23:41 olvidate de input y pedirle nada al usuario 19:23:42 ok 19:23:48 ok ok ok ok 19:23:50 dame 1 sec 19:23:54 ;) 19:25:26 def subir_volumen(self,increm_volumen = 1): 19:25:26 self.volumen += increm_volumen 19:25:28 ale 19:25:53 perfect 19:26:00 para los otros metodos 19:26:05 mas de lo mismo 19:26:26 lo hago? 19:26:34 como quieras xD 19:26:45 es solo para aprnder 19:26:51 dejalo vamos a otro metod especial 19:26:59 oki 19:27:06 el metodo __str__ 19:27:20 sirve para sustituir la sentencia print 19:27:24 aplicada al objeto 19:27:29 haz una prueba 19:27:35 intenta imprimir el objeto 19:27:36 es decir 19:27:41 mi_radio = Radio() 19:27:46 print mi_radio 19:27:52 y dime lo que de sale 19:28:20 ok 19:28:40 <__main__.Radio instance at 0x1> 19:29:38 exacto 19:29:47 te esta diciendo que es una intancia de radio 19:29:53 pero mediante el metodo __str__ 19:30:01 podemos sustituirlo por lo que queramos 19:30:20 vamos a hacer que devuelva el valor del volumen y la frecuencia 19:30:20 lo que pongamos en __str__ 19:30:26 sera lo que salga en el print, n? 19:30:29 si 19:30:36 pero __str__ debe devolver 19:30:40 una cadena de texto 19:30:48 es decir return algo 19:30:56 y ese algo debe ser un string 19:30:58 ok? 19:31:01 def __str__(self): 19:31:01 return "\tVolumen: " + str(self.volumen) + "\n\tFrecuencia: " + str(self.frecuencia) 19:31:06 por ejemplo esa 19:31:17 dime si la entiendes 19:31:19 pruebala 19:31:24 y mira lo que saca en pantalla 19:32:26 pos me salta error :S 19:32:28 un sec 19:32:28 x'D 19:32:32 identacion 19:32:35 cambiala 19:32:42 a la que tengas puesta ahi 19:32:48 es decir borra la mia y pon la tuya 19:32:49 xD 19:34:29 porfin 19:34:45 tio, me hice programador para escapar de mi basto lenguaje de faltas ortograficas 19:34:50 freQuencia 19:34:52 a todos lados 19:34:57 ale, sta cambiado ya 19:35:00 ok, lo entiendo 19:35:15 pero no conocia los \n y \t 19:35:53 vale que no conociras \t 19:35:56 que es el tabulador 19:36:01 pero \n 19:36:05 el salto de linea? 19:36:06 lol 19:36:06 xD 19:36:15 no sabia cual es cual ¬¬ 19:36:16 son secuencias de escape 19:36:19 xD 19:36:28 lapsus mental tio 19:36:29 x'D 19:36:29 vale, lo entiendes no? 19:36:34 si 19:36:57 bien pues nuestra clase radio a dado lo que tenia que dar 19:37:00 vamos con otra 19:37:01 xD 19:37:13 guarda esa o borrala o lo que quieras 19:37:14 xD 19:37:21 tio, algun dia te invitare a algo en un bar 19:37:25 xD 19:37:26 no se como, pero lo hare 19:37:38 o si no, trabajare para hacerte el trabajo sucio de depuracion de tus paranoias 19:37:41 o lo que necesites ¬¬ 19:37:43 yo ayudo al que muestra interes 19:37:43 :D 19:37:53 vale listo? 19:37:57 y yo busco una manera de compensarlo.. 19:37:59 sip 19:38:03 nuevo archivo 19:38:06 que tal las mates? xD 19:38:14 bien 19:38:23 sabes lo que es un bunto matematico? 19:38:29 menos trigonometria, que se que voy a suspender... 19:38:35 con ese nombre n 19:38:41 pero como hago las clases en catalan 19:38:47 dame 1 sec que lo miro en google 19:38:53 (x, y) 19:38:57 (4, 3) 19:39:03 un eje cartesiano 19:39:10 4 unidades hacia arriba 19:39:14 tres a la derecha 19:39:20 no te suena? xd 19:39:48 claro 19:39:52 eso si 19:39:58 pues eso es un punto 19:39:58 xD 19:40:02 un eje de cordenadas de toda la vida 19:40:08 se pues eso 19:40:14 se llama punto matematica 19:40:22 vale 19:40:24 es que pusiste bunto 19:40:25 x'D 19:40:32 por eso no lo pillaba... :S 19:40:32 a sorry 19:40:32 x'D 19:40:33 xD 19:40:40 vale xD 19:40:49 pues vamos a crear una clase punto 19:40:54 para crear objetos punto 19:40:55 ok? 19:41:04 pensemos 19:41:14 que propiedades tiene un objeto punto? 19:41:23 x / y 19:41:33 pues venga 19:41:37 quiero mi init 19:41:46 que inicialice los valores x e y 19:42:00 que me permita crear puntos 19:42:05 y que si no lo paso valores 19:42:11 me defina el punto (0, 0) 19:42:27 oki 19:43:16 def __init__(self, x = 0, y = 0): 19:43:16 self.x = x 19:43:16 self.y = y 19:43:33 perfect 19:43:43 ves que no es tan dificil? 19:43:51 inicializar, no 19:43:54 ya no x'D 19:43:56 ahora implementa un metod __str__ que lo imprima bonito 19:44:00 oki 19:44:04 es decir que si yo hago 19:44:16 a = Punto(4, 3) 19:44:19 print a 19:44:22 imprima: 19:44:25 (4, 3) 19:47:06 class punto: 19:47:06 def __init__(self, x = 0, y = 0): 19:47:06 self.x = x 19:47:06 self.y = y 19:47:06 def __str__(self): 19:47:07 return "x: " + str(self.x) + "\ny: " + str(self.y) 19:47:09 mi_punto = punto() 19:47:13 print mi_punto 19:47:35 eso no lo imprime como te he dicho xD 19:47:44 quiero que lo muestre asi: 19:47:53 (8, 9) 19:47:58 ah ostias 19:47:59 que es como se representa un punto 19:47:59 ok ok 19:48:27 las matematicas hay que tratarlas bien y hacer las cosas como son xD 19:48:43 class punto: 19:48:44 def __init__(self, x = 0, y = 0): 19:48:44 self.x = x 19:48:44 self.y = y 19:48:44 def __str__(self): 19:48:45 programacion y matematica es muy ligado 19:48:46 return "(" + str(self.x) + "," + str(self.y) + ")" 19:48:48 mi_punto = punto() 19:48:51 print mi_punto 19:49:00 te falta un espacio despues de la coma 19:49:04 ", " 19:49:06 xD 19:49:07 pero bien 19:49:20 asi queda simetrico 19:49:21 ¬¬ 19:49:25 ok ya tenemos la manera 19:49:34 de crear puntos y mostrarlos en pantalla 19:49:51 imagina que queremos sumar dos puntos 19:49:58 sabes sumar dos puntos matematicos? 19:50:11 sumas las x y las y 19:50:13 y ya n? 19:50:15 exacto 19:50:27 x + x // y + y 19:50:37 si, pero al sumar 19:50:43 creamos otro punto 19:50:45 es decir 19:50:49 tenemos dos puntos 19:50:56 si 19:50:57 a = (4, 3) 19:51:02 b = (5, 8) 19:51:05 si sumamos 19:51:14 queremos obtener el objeto punto resultante 19:51:19 aha 19:51:22 si, claro 19:51:47 ok, esto ya pilla consistencia 19:51:49 x'D 19:51:51 lo hago =? 19:52:55 intentalo 19:52:56 xD 19:53:07 x'D 19:53:27 tengo que cenar, y creo que esto me durara un rato (crear el metodo pertinente) 19:53:31 despues te veo, oki=? 19:53:47 ok, que aproveches 19:54:03 hacerlo es fascilicimo de una manera que despues te enseñare 19:54:11 oki 19:54:15 pero quiero que primero lo hagas con las herramientas que conoces 19:54:16 tal vez se me ocurra 19:54:20 oki 20:34:42 adrigm, vorvi 20:34:46 time to hacer esto x'D 20:40:00 Hecho adri 20:40:08 creo que es un poco chapuza, pero esta hecho 20:40:09 mira 20:40:43 adrigm, http://pastebin.com/CzwpJPiX 20:41:11 creo que estaria mejor hablar por un sitio donde nos avisara cuando uno o otro esta hablando x'D 20:54:10 esto me avisa 20:54:13 solo que no estaba 20:54:14 xD 20:54:23 estaba jugando al fifa 20:54:23 xD 20:54:38 ah tio 20:54:43 si quieres mañana continuamos 20:54:47 asi de trankis y ya :D 20:55:03 eso esta mal xD 20:55:06 primero 20:55:12 no estas creando un nuevo punto 20:55:25 solo imprimiendo la suma de los otros dos 20:55:26 xD 20:55:29 segundo 20:55:39 def sumarpuntos(self): 20:55:39 self.xtotal = a.x + b.x 20:55:39 self.ytotal = a.y + b.y 20:55:54 a.x y b.c 20:55:56 b.x 20:56:01 te lo sacas de la manga? 20:56:11 no 20:56:14 estan definidos primero 20:56:27 ah, quieres que crea un nuevo punto 20:56:29 l00l 20:56:30 .. 20:56:39 eso es ta mal 20:56:41 tu no sabes 20:56:47 si el punto se va a llamar a o b 20:56:52 ademas recuerda que un metodo 20:57:04 actua sobre el objeto al que perrenece 20:57:18 la cosa seria mas o menos esta 20:57:24 ya pensaba yo que seria una burrada 20:57:28 a = Punto(4, 20:57:33 a = Punto(4, 3) 20:57:46 b = Punto(5, 8) 20:58:00 si yo quiero sumar a a 20:58:01 b 20:58:09 pues serialgo como esto 20:58:12 a.sumar(b) 20:58:27 si casi se puede leeer 20:58:32 á a sumar b 20:58:34 ah 20:58:46 y adri, no quedaria mejor como una funcion aparte? 20:58:51 una funcion que sume los puntos 20:58:53 NO 20:58:57 OO 20:58:58 xD 20:59:03 no mezcles aqui funciones 20:59:10 lol ok 20:59:11 elmetodo podria ser asi 20:59:18 def sumar(self, b): 20:59:59 return Punto(self.x + b.x, self.y + b.y) 21:00:21 como ves el metodo tiene como parametro otro punto 21:00:28 y retorna un nuevo punto 21:00:50 pero ese nuevo punto que nombre tiene? 21:00:53 que tiene como valor de x la suma de la x de a y b y como parametro y la suma de sus respectivos 21:01:04 ninguno hasta que no se lo des 21:01:08 por ejemplo seria 21:01:13 c = a.suma(b) 21:01:16 y c 21:01:25 seria un nuevo punto suma de a y b 21:01:38 o puedes hacer: 21:01:43 prin a.suma(b) 21:01:52 que llamaria al metodo __str__ 21:01:58 lo ves? 21:02:02 si 21:02:11 mas o menos 21:02:14 vale, este metodo es un royo 21:02:19 lo suyo seria poder hacer 21:02:21 aunque tengo una pregunta un poco noob 21:02:26 pregunta 21:02:27 primero 21:02:30 nunca he utilizado el return 21:02:31 luego seguimos xD 21:02:37 dix 21:02:38 xD 21:02:44 si, tu riete 21:02:52 pero, no seria lo mismo sin el return? 21:03:01 ruturn es el valor que devuelve un metodo o funcion 21:03:05 olvidate de la OO 21:03:09 vamos a las funciones 21:03:11 simplemente donde dice return lo asignas a una variable 21:03:13 y ya 21:03:25 no, porque esa variable solo existe dentro de la funcion/metodo 21:03:42 pff te veo pez en esto 21:03:49 vamos a explicartelo 21:03:53 abre una consola 21:03:53 x'D 21:03:59 de python 21:04:00 que lo pillo 21:04:16 no, venga te explico 21:04:20 que si tienes dudas en esto 21:04:23 estamos jodidos 21:04:23 ok ya 21:04:31 por? 21:04:37 x'D 21:05:11 >>> def suma(a, b): 21:05:11 ... c = a + b 21:05:11 ... 21:05:11 >>> suma(5, 4) 21:05:11 >>> print c 21:05:11 Traceback (most recent call last): 21:05:11 File "", line 1, in 21:05:11 NameError: name 'c' is not defined 21:05:16 eso es lo que dices tu 21:05:18 no? 21:05:23 mira que lindo error da 21:05:23 xD 21:05:47 diox 21:05:48 x'D 21:07:05 sun embargo: 21:07:06 >>> def suma(a, b): 21:07:06 ... return a+b 21:07:06 ... 21:07:06 >>> c = suma(5, 4) 21:07:06 >>> c 21:07:06 9 21:07:06 >>> 21:07:20 return devuelve lo que quieras, es decir 21:07:29 es el valor que devuelve la funcion metodo 21:07:41 en nuestro caso la funcion suma devuelve la suma de los dos parametros pasados 21:07:57 ok 21:08:08 pero la funcion suma, la acabas asignando a una variable 21:08:16 es eso en lo que dudaba 21:08:17 si pero fuera 21:08:17 :D 21:08:26 podria imprimirla en pantalla 21:08:30 o hacer lo que quisiera 21:08:37 o como parte de un calculo 21:08:45 d = 8 21:08:57 e = suma(4, 5) + d 21:09:05 ves? 21:09:08 si! 21:09:18 vale 21:09:27 volvamos a nuestro metodo suma de puntos 21:09:32 aclarado el retuen 21:09:39 el metodo que tenemos es un royo 21:09:46 lo suyo seria sumar puntos asi 21:09:49 c = a + b 21:09:54 donde a y b son puntos 21:10:03 y almacena en c otro punto 21:10:06 aha 21:10:07 espera vengo ya 21:10:19 buff, ok 21:10:22 ;) 21:14:42 vale ya 21:14:44 seguimos 21:14:47 bien 21:14:51 hacer esto 21:14:53 se llama 21:15:00 sobrecarga de operadores 21:15:01 ale ya sta 21:15:02 x'D 21:15:09 ya esta el que? xD 21:15:22 sumar los 2 puntos 21:15:35 a verlo 21:15:39 le he pegao un repaso a la conversacion, lo he pillado todo y lo he puesto 21:16:17 enseña xD 21:16:23 http://pastebin.com/TtNiPFEm 21:17:53 bien 21:17:58 pero, lo nombres de clase 21:18:09 por convenio se ponen la primera letra en mayuscula 21:18:25 ah, ok 21:18:26 vale, pero como decimos este metodo es un engorro 21:18:28 mejor 21:18:33 c = a + b 21:18:46 a esto se le llama sobrecarga de operadores 21:18:59 en este caso sobrecargar el operador + 21:19:05 aha 21:19:11 y se hace con el metodo especial __add__ 21:19:30 simplemente cambia sumar por __add__ 21:19:34 y podras hacer 21:19:40 c = a + b 21:19:53 donde a es el objeto y b el parametro pasado 21:20:04 haz lo mismo para la resta 21:20:10 que usa el metodo __sub__ 21:20:26 esto lo pillas? 21:20:30 si 21:20:47 pero una cosa, si cambio sumar por __add__ 21:20:54 es igual de engorroso n? 21:20:59 ?? 21:21:08 no porque luego en vez de hacer 21:21:14 c = a.sumar(b) 21:21:17 puedes hacer: 21:21:19 c = a + b 21:21:22 ah 21:21:36 o puedes usarlo tambien de la otra manera: 21:21:45 c = a.__add__(b) 21:21:54 pero vamos, si se sobrecarga es para algo 21:21:56 xD 21:22:39 claro 21:23:34 vale 21:23:37 def __add__(self, b): 21:23:37 return Punto(self.x + b.x, self.y + b.y) 21:23:37 def __sub__(self, b): 21:23:37 return Punto(self.x - b.x, self.y - b.y) 21:23:37 a = Punto(1, 7) 21:23:38 b = Punto(4, 2) 21:23:40 c = a + b 21:23:43 print c 21:23:45 c = a - b 21:23:47 print c 21:23:49 ended 21:23:52 ;) 21:24:00 no te va gustando mas? xD 21:24:05 ya esta casi todo 21:24:14 la multiplicacion es igual 21:24:18 pero hay dos tipos 21:24:25 por un escalar o por otro punto 21:24:31 dejemosla pendiente de momento 21:24:37 oki 21:24:41 sobes hallar la distancia entre dos puntos? 21:25:05 hmm... dejame pensar... 21:25:15 es con el teorema de pitagoras 21:25:29 a si? 21:25:45 yo restaria el primero al segundo 21:27:12 http://razonartificial.com/wp-content/uploads/2010/11/modulo.png 21:27:17 a ver si eso te aclara xD 21:27:43 ok 21:27:46 lo pillo 21:28:05 seguro? 21:28:18 porque tienes que hacer un metodo que calcule la distancia xD 21:28:23 oki 21:28:26 del estilo: 21:28:33 a = Punto(4, 3) 21:28:40 b = Punto(5, 8) 21:28:46 a.distancia(b) 21:29:03 y devuelva la distancia que hay de a á b 21:29:23 diras que royo meter matematicas en todo esto, pero es que esta tan relacionado... 21:29:31 la distancia evidentemente sale en ocrdenadas (x,y) 21:29:32 sobre todo esto para los juegos de distancias y demas 21:29:36 no 21:29:41 tio, no me digas eso 21:29:41 la distancia es un valor 21:29:55 yo soy programador porque me gustan las mates y la fisica.. 21:29:56 x'D 21:30:21 tu estas en el punto (5, 4) 21:30:28 y quieres ir al punto (8, 9) 21:30:33 la distancia sera en metros 21:30:37 o lo que sea 21:30:42 no un (x, y) 21:30:48 que es un punto del espacio 21:30:55 ok, ves, eso si que no lo sabia 21:31:10 me pongo a ello 21:31:14 dices que estas en 1º bach?' O.i 21:31:15 xD 21:31:33 o tu insti no es muy bueno o tu has pasado de chiripa 21:31:34 xDD 21:31:51 tio... 21:32:04 soy el mejor de mates de mi clase.... 21:32:06 de chicos 21:32:10 de chicas no... 21:32:16 pero siempre he estado en el top 3 ¬¬ 21:32:35 ahora, el nivel de la peña es una mierda 21:32:37 x'D 21:32:45 y el del instituto por lo que veo! xD 21:32:52 si, de los profes 21:33:02 hazme el metodo 21:33:07 luego contamos nuestras vidas 21:33:08 vamos, hace 2 semanas empece trigonometria, en mi vida 21:33:13 x'D 21:33:14 zorra ¬¬ 21:33:17 xD 21:33:24 venga el tiempo es oro 21:33:27 lo que quieor decir, es que claro que se hacer pitagoras joder x'D 21:33:50 tienes prisa? 21:33:51 si pero parece que nunca has usado las cosas para casos reales 21:33:52 xD 21:33:59 no, pero perder el tiempo es malo 21:33:59 xD 21:34:08 es el recurso mas valioso que tenemos 21:34:21 ni lo podemos almacenar, ni venderlo ni comprarlo 21:34:37 y toda tarea u objetivo necesita este recurso 21:34:39 sea la que sea 21:34:54 asi que imagina cuan valioso es cada vez que lo pierdas xD 21:35:44 en eso si que te doy la razon 21:35:56 todo lo que me han enseñado, nunca me han hecho pasarlo a la realidad 21:36:30 la mierda de sistema educativo 21:36:37 enseñan las cosas una detras de otra 21:36:45 sin objetivo o motivacion 21:36:53 es asi x'D 21:37:04 enseñan miles de cosas que para mi son intracendentes y lo llaman cultura general 21:37:13 que cada uno se especialize en lo que quiera 21:37:30 porque si yo quiero ser ingeniero tengo que saberme la vida de gongora y quevedo 21:37:54 seh 21:38:09 gracias a dios poco a poco esta cambiando 21:38:17 y cada vez te dejan especiarlizarte mas 21:38:31 haz el metodo! 21:39:02 lo estoy haciendo 21:39:08 ok 21:39:20 tio, la diferencia es que pillo mas cosas con la marcha 21:39:21 sqtr 21:39:22 x'D 21:41:58 esta en el modulo math 21:42:09 import math 21:42:15 math.sqrt(9) 21:42:52 tremendo fracaso el proyecto started eh xD 21:42:58 no se quien lo intuyó xD 21:43:56 nadie postea nada x'D 21:44:36 esque tio, hay mucha gente, y alguna competente, pero no hay managers 21:45:47 es imposible con gente sin experiencia coordinar nada 21:46:11 yo prefiero coger a uno o dos que se interesen en aprender de verdad y ayudarlo 21:46:14 como tu caso 21:46:19 que querer ayudar a todo el mundo 21:46:22 y no ayudar a nadie 21:46:33 no prediques en el desierto 21:46:41 por eso he cambiado el blog 21:46:45 ya, pero mucha gente nse, vi que puso cosas en experiencia 21:47:23 no sale el metodo? 21:47:39 si, ya sta 21:47:49 un momento y ya 21:49:15 adri, puede salirme error, porque estoy haciendo una raiz cuadrada de un numero negativo? 21:49:26 xDDD 21:49:32 sabia que te trabarias en eso 21:49:51 las distancias negativas no existen 21:49:55 primero habia puesto ax-bx 21:50:00 y es al reves 21:50:03 y ahora me ha salido eso 21:50:07 xDDD 21:50:09 claro que no existen x'D 21:50:12 busca en google 21:50:14 lo pongo como valor absoluto? 21:50:19 yessss 21:50:21 xD 21:50:27 mira lo has sacado por ti mismo 21:50:28 xD 21:50:31 ves como algo se ¬¬ 21:50:33 xD 21:50:39 bien ;) 21:50:51 se hace con 21:50:52 abs() 21:50:55 ;) 21:50:58 ok 21:51:39 hell yeah 21:51:43 te paso el paste 21:52:14 http://pastebin.com/PGVqXGSN 21:53:33 que pasa que la y no puede salir negativa? 21:53:41 debes poner el valor absoluto en ambos lados 21:53:42 xD 21:54:20 el abs 21:54:31 pilla el resultado de la suma de los 2 catetos 21:54:35 no solo la x 21:55:02 return Punto (sqrt(abs((b.x - self.x) + (b.y - self.y)))) 21:55:04 a ver 21:55:19 ambos deben ser valor absoluto 21:55:36 y te falta elevar al cuadrado ambos 21:55:37 y no lo son ahi 21:55:38 abs((b.x - self.x) + (b.y - self.y) 21:55:40 ? 21:55:47 abs((b.x - self.x) + (b.y - self.y)) 21:55:48 ahora 21:55:49 a vale 21:55:55 que los ha hecho todo junto 21:56:00 a sako 21:56:00 x'D 21:56:01 vale vale 21:56:03 pero 21:56:11 dime 21:56:12 no has elevado al cuadrado 21:56:28 h² = b² + c² 21:56:32 ya 21:56:35 despejando 21:56:35 coño... 21:56:37 :S 21:56:40 tienes razon 21:56:40 xD 21:56:41 x'D 21:56:45 FAIL 21:57:05 pos elevo al cuadrado las 2 cosas 21:57:14 clara cada cateto 21:57:55 return Punto (sqrt(abs((b.x - self.x)**2 + (b.y - self.y**2)))) 21:58:09 saca el segundo cuadrado del parantesis 21:58:10 asi no hace falta el valor absoluto 21:58:14 si 21:58:23 pero ahora sobra el abs 21:58:47 porque cualquier elevacion al cuadrado da positivo 21:59:11 si 21:59:16 al elevar al cuadrado 21:59:20 es positivo el valor 21:59:28 y como hay una suma 21:59:28 pos nada 21:59:29 x'D 21:59:36 return Punto (sqrt((b.x - self.x)**2 + (b.y - self.y)**2)) 21:59:48 prueba poniendo un punto en (0, 0) 21:59:54 y otro en (4, 3) 22:00:00 deberia darte 25 22:00:10 eyeeyeyeyey 22:00:11 eyeyeyeyey 22:00:14 esperaaaaaaaaaa 22:00:18 x'D 22:00:20 return Punto (sqrt((b.x - self.x)**2 + (b.y - self.y)**2)) 22:00:23 WTF? 22:00:31 desde cuando se retorna un punto???? 22:00:42 se retorna el valor de la raiz 22:00:45 no un punto 22:00:47 dix 22:01:20 corrige y prueba con los valores que te dije 22:01:28 deberia dar 25 si esta todo correcto 22:02:46 me sale 5... 22:03:31 ostia si 22:03:33 eso 5 22:03:35 xDD 22:03:40 raiz de 25 22:03:42 que es 5 22:03:46 estoy yo conla cabeza...xD 22:03:54 si el triangolo 3 4 5 22:03:58 of course 22:04:01 pues esta bien 22:04:02 xD 22:04:03 ;) 22:04:28 bueno aunque no lo creas ya sabes bastante de lo que es la OO 22:04:32 queda la herencia 22:04:40 pero ya hemos visto 22:04:55 clases, objetos, sobrecarga, encapsulacion, metodos 22:05:00 ya no te suena a chino no? xD 22:05:27 para nada 22:05:32 :D 22:09:07 dejamos al herencia para otro rato 22:09:09 si quieres 22:09:17 hoy ya has gastado mucho tiempo en un servidor 22:13:22 utiliza lo que has aprendido 22:13:37 haz un juego OO 22:14:03 algo en especial? 22:14:29 mmm lo que quieras algo facil 22:14:55 yo en su dia hice el juego de la vida 22:15:15 pues probare ha hacerlo