Title | ARGENTINA PROGRAMA- EJERCICIOS PLATAFORMA ÙTILES |
---|---|
Author | john maynerd |
Course | Lenguajes de Programación |
Institution | Universidad de Buenos Aires |
Pages | 152 |
File Size | 13.4 MB |
File Type | |
Total Downloads | 646 |
Total Views | 1,019 |
Argentina Programa - 3- RUBYArgentina Programa - 3- RUBYCapítulo Capítulo 3: 3: Programació Programación n con con Objetos ObjetosEl paradigma de objetos, a El paradigma de objetos, a veces también conocido cveces también conocido como orientado a objetos nosomo orientado a objetos nos propone soluc...
Argentina Programa - 3- RUBY
Capítulo 3: Programació Programación n con Objetos El paradigma de objetos, a veces vecestambién tambiénconocido conocidocomo comoorientado orientadoaaobjetos objetos nos pro problemas problemasyymodelar modelarnuestra nuestrarealidad realidadempleando empleandoobjetos objetos que se comunican entre e mensajes. mensajes.¡Adentrémonos ¡Adentrémonosen enel elmundo mundode delos losobjetos objetosyyRuby! Ruby!
Lecciones 1. Objetos y mensajes 1. Fijando nuestro objetivo 2. ¡Hola Pepita! 3. Un mundo de objetos 4. 4.El Elderecho derechoaala la Identidad Identidad 5. 5.Mensajes, Mensajes, primera primera parte parte 6. 6. Mensajes, Mensajes, segunda segunda parte parte 7. No entendí... 8. Un poco de sintaxis 9. Interfaz 10. 10. Hacer Hacer versus versus Devolver
12. 12.Cambiando Cambiando la la referencia referencia 13. El encapsulamiento 14. 14. Vamos Vamos terminando terminando 15. 15. ¡Se ¡Se va va la la que que falta! falta!
4. Colecciones
11. 11.Tu Tuprimer primerprograma programacon conobjetos objetos 12. ¿Quién te entiende? 13. 13. Interfaces Interfaces compartidas compartidas 14. Argumentos 15. Más argumentos 16. 16. Mensajes Mensajes por por todas todas partes 17. Recapitulando
1. Entrando en Calor 2. 2. Creando una lista 3. Algunos mensajes básicos 4. 4. Mejorando Mejorando la la Biblioteca Biblioteca 5. ¿Bloques? ¿Eso se se come? come? 6. Bloques con parámetros 7. 7. Filtrando Filtrando quienes quienes cumplen cumplen 8. El que busca busca encuentra 9. ¿Alguno cumple? ¿Todos cumplen? 10. 10. El El viejo viejo yy querido querido map map 11. ¿Cuántos cumplen? ¿Cuánto suma 12. Jugando a todo
2. Definiendo objetos: métodos y estado
5. Referencias
1. 1. Creando Creando aa Pepita Pepita 2. 2. Pepita, Pepita, ¿me ¿me entendés? entendés? 3. 3. Los Los mejores, mejores, los los únicos, únicos,los los métodos métodos en en objetos objetos 4. 4. Perdiendo Perdiendo energía energía 5. Atributos 6. 6. Asignaciones Asignaciones yy referencias referencias 7. Conociendo el país 8. Leyendo el estado 9. Cuestión de estado 10. ¿Dónde estás? 11. Volando alto 12. 12. Delegar Delegar es es bueno 13. 13. ¿Es ¿Es mi miresponsabilidad? responsabilidad?
3 Polimorfismo y encapsulamiento
1. Var Variables iables 2. Las variables son referencias 3. 3. Referencias Referencias implícitas implícitas 4. 4. Múltiples Múltiples referencias referencias 5. 5.Identidad, Identidad,revisada revisada 6. Equivalencia 7. 7. Objetos Objetos bien bien conocidos conocidos 8. Atributos y parámetros 9. 9. Objetos Objetos compartidos compartidos 10. 10. Para Para cerrar cerrar
6. Clases e Instancias 1. Zombi caminante
Argentina Programa - 3 - RUBY 7. Herencia 1. Auto 2. Moto 3. 3. Clase Clase abstracta abstracta 4. 4. Medio Medio de de transporte transporte 5. Todo pesa 6. Peso repetido 7. Bicicleta 8. Muy pesada 9. Redefiniendo peso 10. 10. El El regreso regreso de de los loszombis zombis 11. 11.Herencia Herencia zombie zombie 12. Micro 13. 13. Suben y bajan bajan 14. 14. La La pesada pesada herencia herencia 15. Súper ataque 16. 16. Camiones Camiones muy muy especiales especiales
8. Excepciones 1. ¡Sin energía! 2. Sólo Volar Si... 3. Una falla silenciosa 4. ¡Fallar! ¡Fallar! 5. Lanzando exc excepciones epciones 6. 6. Abortando Abortando la la evaluación evaluación 7. Paren todo 8. 8. El El orden orden importa importa 9. Estudiando a pepita 10. Un buen mensaje
Argentina Programa 3_01_01 Fijando nuestro objetivo Anteriormente hablamos de los paradigmas de programa programacción ión.. En este capítulo vamosa vamosa ver otra forma de pensarel pensarel mundo El paradigma de programaci programación ón con objetos o programación programación orientada a aobjetos objetos nospropone nospropone tratar con…¡Adiviná! con…¡Adiviná! Sí, nos objetos. En este video te contamos qué qué son esos famosos objetosy objetosy cómo interactúan entre sí.
Introdu Introducci cción ón a Pr ogra ogramac mación ión con Obj Objet et os ccon on R Rub ub y
Argentina Programa 3_01_02 ¡Hola Pepita! Para Para empezar empezar en en este este mundo mundo, conozcamos a Pepita Pepita , una una golondrina golondrina (http:// (http://es.wikipedi es.wikipedia.org/wiki/Hirundo_rustica) a.org/wiki/Hirundo_rustica)..
Pepita Pepita, ,además ademásde deser serun unave aveque quecome comeyyvuela vuela(como (comotodo todopájaro), pájaro),es esun unobjeto, objeto,que quevive viveen enel mundo de los objetos, al cu ambiente.
¿No nos creés que Pepita está está viva yy es un objeto? objeto? Escribí en la consola consola Pepita y jate qué sucede. Cuando te convenzas, convenzas, pasá a
¡Dame una pista!
La consolaes esel el recuadro recuadro que tenés tenésaa la laderecha derechadel del texto, texto,yysirve sirve para parahacer hacerpruebas pruebas rápidas. rápidas. ✔ Usarla Usarla es esmuy muy sencillo: sencillo: escribí escribílo lo que que querés querés probar y luego presioná la tecla Enter para ver ver su resultado. resultado. Si Si alguna alguna vez vez usa usa como la de GNU/Linux GNU/Linux (https:// (https://es.wikipedia. es.wikipedia.org/wiki/GNU/Linu org/wiki/GNU/Linux) x),, la mecánica es la misma.
Pepita Pepita
=> => Pepita Pepita
Argentina Programa 3_01_03 Un mundo de objetos Como vimos, Pepita Pepita es unobjeto. unobjeto. Pero Pepita Pepita no est está ásola sola en en este estemundo. mundo. ¡Hay ¡Hay muchos muchos más! Por Por ejemplo, ejemplo, existe otra golondrina, golondrina, llamada Norita Norita , qu quee también tambiénvive vive en en este este ambiente ambiente. Como ya te vendrás dando cuenta, en este paradigmabajo el cual estamos trabajando trabajando absolutamente todo es un objeto: las cadenas de texto (o strings) y los booleanos.
¡Probalo! ¡Probalo! Hacé Hacélas lassiguientes siguientesconsultas consultasen en la laconsola: consola:
Pepita Pepita
Norita Norita
87 87 'hola mundo' mundo' true true
De De todas formas formas tené tené cuidado. cuidado. A A Pepita Pepita y Norita Noritalas las creamos creamos por por vos. vos. YY los los números números yy booleanos booleanos vienen vienende deregalo. regalo. Si Si pp como por ejemplo Felix Felix, te te va a tirar tirar un un error. error.
Norita Norita
=> => Norita Norita
87
=> 87
'hola 'hola mundo' mundo'
=> => "hola "hola mundo" mundo"
true
=> true
Argentina Programa 3_01_04 El El derecho derecho aa la la Identidad Identidad Un aspecto muy importante importante de los objetos es que tienen tienen identidad identidad: cada objeto sab sabe quién es y gracias a esto sabe tambié los demás. Por ejemplo, Pepita Pepita sabe que ella es diferente difere nte de Norita , y viceversa. En Ruby, podemos comparar comparar por por identidad a dos objetos objetos utilizando el operador == de la siguiente forma:
Pepita Pepita
Norita Norita
== ==
¡Intentalo ¡Intentalopor portu tupropia propiacuenta! cuenta!Ejecutá Ejecutálas lassiguientes siguientespruebas pruebasen enla consola:
Norita Norita
Pepita Pepita
== ==
Norita Norita
== ==
Norita Norita "hola" "hola"
Pepita Pepita Norita Norita
== ==
"chau" "chau"
== ==
¡Dame una pista!
¿Te ¿Te cansaste de escribir? T Te e dejamos un truquito para para usar la consola más más rápido: si apretás la echa para arriba ⬆, se re escribiste.
Pepita Pepita == == Norita Norita
=> => false false
Norita Norita == == Pepita Pepita
=> => false false
Norita Norita == == Norita Norita
=> true
"hola" "hola" == == "chau" "chau"
=> => false false
Argentina Programa 3_01_05 Mensajes, primera parte Ya entendimos que en un ambiente ambiente hay hay objetos, y que que cada uno de ellos tiene iden identidad tidad: sabe que es diferented diferentede e otro. Pero esto no parece ser mu muy y útil. útil. ¿Qué ¿Qué cosas sabrá hacer hacer una golondrina como Pepita Pepita ? ¿Sabrá, por ejemplo, cantar! antar! ?
Averigualo: Averigualo: enviale enviale un me mensaje nsaje cantar! y jate qué pasa... pasa...
Pepita.cantar! Pepita.cantar!
¡Dame una pista!
El signo de excla exclamación mación ! es parte del nombre del mensaje, no te olvides de ponerlo.
Pepita.cantar! Pepita.cantar!
=> => "pri "pri pri pri pri" pri"
Argentina Programa 3_01_06 Mensajes, segunda parte Ehhhh, ¿qué acaba de pasar aacá? cá? Para comunicarnos con losobjetos, losobjetos, debemos enviarles enviarles mensajes mensajes.. Cuando un objeto objeto recibe un mensaje, este est e responde Pepitaprodujo pri pri pri pri pri ...imaginate acá que escuchamos este caso, Pepita produjo el sonido de una una golondrina: pri este sonido (https://ww sonido
v=NteRoisnwAI)...
.
¿Qué mas sabrá hacer Pepita Pepita ? ¿Sabrá, por ejemplo, bailar! bailar! ?
¡Descubrámoslo! ¡Descubrámoslo!Enviale Envialeel elmensaje mensaje bailar!
Pepita.bailar! Pepita.bailar!
Pepita.bailar! Pepita.bailar!
undefined undefined method method `bailar!' `bailar!' for for Pepita:Module Pepita:Module (NoMethodError) (NoMethodError)
Argentina Programa 3_01_07 No entendí... ¡Buu, Pepita Pepita no sabía bailar! bailar!
En el mundo de los objetos, objetos, sólo tiene sentido enviarle enviarle un mensaje a un objeto silo silo entiende, es decir, si sabe sabe hacer algo mensaje. mensaje. De De lo contrario, contrario, selanzará selanzará un error un poco feo feo (y en inglés
) como el siguiente:
undefined undefinedmethod method`bailar!' `bailar!'for forPepita:Module Pepita:Module
Descubramos Descubramos qué qué otras otras cosas cosas sabe sabehacer hacer Pepita . Probá enviarle los siguientes mensajes y jate cuáles entiende y cuales no conocimiento nos servirá en breve.
Pepita.pasear! Pepita.pasear!
Pepita.energia Pepita.energia
Pepita.comer_lombriz! Pepita.comer_lombriz!
Pepita.volar_en_circulos! Pepita.volar_en_circulos!
Pepita.se_la_banca? Pepita.se_la_banca?
Pepita.pasear! Pepita.pasear!
undefined undefined method method `pasear!' `pasear!' for for Pepita:Module Pepita:Module (NoMethodError) (NoMethodError)
Pepita.energia Pepita.energia
=> 100 100
Pepita.comer_lombriz! Pepita.comer_lombriz!
=> nil nil
Pepita.volar_en_circulos! Pepita.volar_en_circulos!
=> nil nil
Argentina Programa 3_01_08 Un poco de sintaxis ¡Pausa! Analicemos la sinta sintaxis xis del envío de mensajes: 1. Pepita.energia Pepita.energiaes u un n envío envío de mensaje, mensaje, también también llamado colaboración colaboración; energia es el mensaj mensaje e; 2. energia
3. energia energiaes el nombredel nombredel mensaje mensaje (en este este caso es igual, pero ya veremos otros otros en los que no); 4. Pepita Pepitaes es el elobjeto objetoreceptor receptordel del mensaje. mensaje.
⚠Es Esimportante importanterespetar respetarlalasintaxis sintaxisdel delenvío envíode demensajes. mensajes.Por Porejemplo, ejemplo,las lassiguientes siguientesNO NOson soncolaboraciones colaboracionesvalidas, validas,pp no hacen lo que deben:
energia energia
Pepita Pepita energia energia Pepita Pepita.. ..energia
¿Eh, no nos creés?
¡Probalas!
energia energia undefined undefined local local variable variable or or method method `energia' `energia' forfor main:Object main:Object (NameError) (NameError)
Pepita Pepita energia energia
undefined undefined local local variable variable or or method method `energia' `energia' forfor main:Object main:Object (NameError) (NameError)
Pepita..energia Pepita..energia
undefined undefined local local variable variable or or method method `energia' `energia' forfor main:Object main:Object (NameError) (NameError)
Argentina Programa 3_01_09 Interfaz Como vimos, un objeto puede puede entender entender múltiples múltiples mensajes; mensajes; a este conjunto de mensajes mensajes que podemos enviarle enviarle lo denom ejemplo, la la interfaz interfaz de Pepita Pepita es: energia energia : nos dice cuanta cuanta energía tiene tiene (un (un número); número); cantar! cantar! : hace que cante; cante; comer_lombriz! comer_lombriz!: hace que coma una lombriz; volar_en_circulos! volar_en_circulos!:: hace que que vuele vuele en encirculos. circulos.
Lo cual también también se puede puede gra car de la siguiente siguiente forma: forma:
¡Un momento! ¿Por qué algunos mensajes terminan en ! y yotros otrosno? no?Enviá Enviánuevamente nuevamente esos esos mensajes. mensajes. Fijate Fijate qué qué devuelve devuelve cada cad derecha del => )) yy tratá tratá de de descubrir el el patrón. patrón.
¡Dame una pista!
nil es es la forma que que tenemos enemosen enRuby Rubyde derepresentar representaraa"la "lanada" nada"(que, (que,casualmente, casualmente,¡también ¡tambiénes esun unobjeto!). objeto!).
Pepita.energia Pepita.energia
=> 100 100
Pepita.cantar! Pepita.cantar!
=> => "pri "pri pri pri pri" pri"
Pepita.comer_lombriz! Pepita.comer_lombriz!
=> nil nil
Pepita.volar_en_circulos! Pepita.volar_en_circulos!
=> nil nil
Argentina Programa 3_01_10 Hacer versus Devolver Cuando se envía un mensaje mensaje aa un objeto, objeto, y este lo entie entiende, nde, puede reaccionar de dos dos formas diferentes: Podría producir un efecto efecto,, es decir hacer algo. Por ejemplo, el mensaje cantar! cantar! reproduce el sonido del canto canto de Pep O también podría devolver olver otro objeto objeto.. Por ejempl ejemplo o el mensaje energia devuelve devuelve siempre un número.
⚠ En realidad, un mensaje podría podría reaccionar con una co combinación mbinación de las formas ante anteriores: riores: tener un efecto y devolver devolver algo. Per .
¿Y ¿Y qué qué hay hay de de los los mensajes mensajes como como comer_lombriz! y volar_en_circulos!??¿Hicieron ¿Hicieronalgo? algo?¿Qué ¿Quéclase clasede deefecto efectoprodujeron? produjeron?¿D ¿D siempre lo mismo? Descubrilo: Descubrilo: enviale enviale a Pepita esos tres mensajes mensajes varias veces veces en distintoorden y jate si cambiaalgo.
Pepita.volar_en_circulos! Pepita.volar_en_circulos!
=> nil nil
Pepita.energia Pepita.energia
=> 90
Pepita.comer_lombriz! Pepita.comer_lombriz!
=> nil nil
Pepita.energia Pepita.energia
=> 110 110
Argentina Programa 3_01_11 Tu Tu primer primer programa programa con con objetos objetos ¡Exacto! El efecto efecto que producen producen los mensajes comer_lombriz! comer_lombriz! y volar_en_circulos! volar_en_circulos! es esel el de de alterar alterarla la energía energía de Pepita comer_lombriz! comer_lombriz! hace hace que que la energia energia de Pepita Pepita aumente en 20 unidades; volar_en_circulos! volar_en_circulos!hace Pepita disminuya en 10 unidades. hace que que la la energia energia de de Pepita unidades.
Como convención, a los mensajes mensajes con efecto(es decir, que hacenalgo) les pondremos pondremos un signo de exclamación exclamación ! al nal.
Veamos Veamos sisi se se entiende: entiende: escribí escribí un unprimer primer programa programa que queconsista consista en enhacer hacer que que Pepita coma coma yy vuele vuele hasta hasta quedarse quedarse con con 150 150 Acordate que Pepita arranca arrancacon con la laenergía energía en en 100. 100.
¡Dame una pista!
No No te te olvides olvides de de que que siempretenés tenés que que poner el el objeto objetoreceptor receptordel delmensaje. mensaje.Por Porejemplo ejemploesto estoes esválido: válido: Pepita.energia Pepita.energia
pero esto no:
energia
Solución
1 2 3 4 5 6 7
Consola
## Escribí Escribí acá acá los los mensajes mensajes que que quieras quieras mandarle mandarle aa Pepita, Pepita, uno uno debajo debajo del del otro. otro. Pepita. Pepita.energia Pepita. Pepita.comer_lombriz! Pepita. Pepita.comer_lombriz! Pepita. Pepita.volar_en_circulos! Pepita. Pepita.comer_lombriz! Pepita. Pepita.energia
¡Muy bien! Tu solución pasó todas las pruebas
Enviar
Esta guía fue desarrollada desarrolladapor porFederico FedericoAloi, Aloi,Franco FrancoBulgarelli, Bulgarelli,Ariel ArielUmansky Umanskybajo bajolos lostérminos términosde de laLicencia Licencia Creative Commons Com Creative Commons Compa (https:// (https://creativecommons creativecommons.org/licenses/by-sa/4.0/). .org/licenses/by-sa/4.0/).
© Copyright 2015-2020 Mumuki Mumuki(http:// (http://mumuki.org/) mumuki.org/)
(h (
Argentina Programa 3_01_12 ¿Quién te entiende? Ya vimos que un objeto puede puede entender múltiples mensajes, mensajes, y esos mensajes conforman conforman su interfaz. ¿Pero podría haber más de un objeto que que entienda los mismos mensajes?
A Pepita ya ya la la conocemos conocemos bien: bien: canta, canta, come, come, etc. etc. Su Su amiga Norita ,, por por otro otro lado, lado, no aprendiónunca nunca aa decirnos decirnos su energía. Y reconocida reconocidacantora. cantora. Usando Usandolalaconsola, consola,averiguá averiguácuál cuáles eslalainterfaz interfazde decada cadauna unade deellas, ellas,yycompletá completáel ellistado listadode demensajes mensajesque quecada cadauna unaentiende entiendeen enel edito
¡Dame una pista!
Buscá la Consolaen la pestaña de al lado de tu Solucióny probá de enviarle a cada objeto los mismos mensajes que Pepit Cuando Cuandodescubras descubrascuáles cuáles son, son,completá completá la lasolución solucióncon conel el mismo mismoformato formatoque queviene vienela la de de Pepita .
Solución
Consola
1 interfaz_pepita 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
%w(
=
energia cantar! comer_lombriz! volar_en_circulos! ) interfaz_norita =%w( cantar! comer_lombriz! volar_en_circulos! ) interfaz_mercedes =%w( cantar! )
Enviar
¡Muy ¡Muybien! bien!Tu Tu solución soluciónpasó pas...