ARGENTINA PROGRAMA- EJERCICIOS PLATAFORMA ÙTILES PDF

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 PDF
Total Downloads 646
Total Views 1,019

Summary

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...


Description



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 vamosa vamosa ver otra forma de pensarel pensarel mundo El paradigma de programaci programación ón con objetos o programación programación orientada a aobjetos objetos nospropone nospropone tratar con…¡Adiviná! con…¡Adiviná! Sí, nos objetos. En este video te contamos qué qué son esos famosos objetosy objetosy 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 consolaes 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 unobjeto. unobjeto. 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 paradigmabajo el cual estamos trabajando trabajando absolutamente todo es un objeto: las cadenas de texto (o strings) 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 Noritalas 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 diferented diferentede 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 losobjetos, losobjetos, debemos enviarles enviarles mensajes mensajes.. Cuando un objeto objeto recibe un mensaje, este est e responde Pepitaprodujo 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 silo silo entiende, es decir, si sabe sabe hacer algo mensaje. mensaje. De De lo contrario, contrario, selanzará selanzará 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.energiaes 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 energiaes el nombredel nombredel mensaje mensaje (en este este caso es igual, pero ya veremos otros otros en los que no); 4. Pepita Pepitaes 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 devolver 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 hacenalgo) 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 siempretené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 Consolaen la pestaña de al lado de tu Solucióny 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...


Similar Free PDFs