Difference between revisions of "Ruby/C3/Object-Oriented-Programming-Methods/English"
Nancyvarkey (Talk | contribs) (Created page with "Test Page") |
|||
Line 1: | Line 1: | ||
− | + | '''Title of script: Object Oriented concept in Ruby''' | |
+ | |||
+ | '''Author: Anjana Nair''' | ||
+ | |||
+ | |||
+ | '''Keywords: class''' | ||
+ | |||
+ | |||
+ | |||
+ | {| style="border-spacing:0;" | ||
+ | | style="border-top:0.05pt solid #000000;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| '''Visual Cue''' | ||
+ | | style="border:0.05pt solid #000000;padding:0.097cm;"| '''Narration''' | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| Slide 1 | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| Welcome to this spoken tutorial on '''Object Oriented Programming – Methods '''in '''Ruby'''. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| Slide 2 | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| In this tutorial we will learn to use: | ||
+ | |||
+ | * '''instance methods''' | ||
+ | * '''class methods''' | ||
+ | * '''accessor methods''' | ||
+ | |||
+ | |||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| Slide 3 | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| Here we are using | ||
+ | |||
+ | * '''Ubuntu '''version 12.04 | ||
+ | * '''Ruby'''1.9.3 | ||
+ | |||
+ | |||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| Slide 4 | ||
+ | |||
+ | Pre-requisites | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| To follow this tutorial, you must have a working '''Internet '''Connection. | ||
+ | |||
+ | |||
+ | You must also have knowledge of '''Linux '''commands, '''Terminal '''and '''Text-editor.''' | ||
+ | |||
+ | |||
+ | If not, for relevant tutorials, please visit our website. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| Before we begin, recall that we had created “'''ttt'''” directory earlier. | ||
+ | |||
+ | |||
+ | Let's go to that directory. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| Switch to the '''terminal''' which has all the commands for creating the directories and the prompt should be in '''oop-methods '''directory | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| Then to '''ruby-tutorial.''' | ||
+ | |||
+ | '''Create a directory names''' '''oop-methods and cd into it'''. | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| Slide 5 | ||
+ | |||
+ | What are '''instance''' '''methods'''? | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| What are '''Instance methods'''? | ||
+ | |||
+ | |||
+ | '''Instance methods '''are those '''methods '''that are available to all '''instances '''of the '''class.''' | ||
+ | |||
+ | |||
+ | Earlier we had studied how to create '''objects '''or '''instances '''of a''' class'''. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| Switch to '''gedit''' where you have already opened the file '''“instance_methods.rb” '''with the class defnition''' '''code typed inside. | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| Create a new file in '''gedit '''as shown in the basic level '''Ruby '''tutorials. | ||
+ | |||
+ | |||
+ | Name it '''instance_methods.rb''' | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| I have a working example of the implementing '''instance methods'''. | ||
+ | |||
+ | |||
+ | You can pause the tutorial, and type the code as we go through it. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| Highlight the “'''initialize'''” method block | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| I have defined a '''class '''named '''Product''' in this example. | ||
+ | |||
+ | |||
+ | I have called an '''initialize''' '''method '''to initialize the '''instance variables''' “'''name'''” and “'''price'''”. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| Highlight the methods “'''name'''” and “'''price'''” | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| I have also defined '''instance methods '''named “'''name'''” and “'''price'''”. | ||
+ | |||
+ | |||
+ | Each of them return '''instance variables''' '''“@name'''” and '''“@price'''” respectively. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| '''Instance methods '''are defined just like normal '''methods'''. | ||
+ | |||
+ | |||
+ | Earlier we had studied how to create '''methods '''in '''Ruby'''. | ||
+ | |||
+ | |||
+ | Shortly we will see how these '''methods '''will be available to all '''instances.''' | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| Now let us implement the logic we have. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| Highlight the poduct object creation code. | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| Here, I have initialized a '''Product''' '''object '''and named it as '''product_object_1'''. | ||
+ | |||
+ | |||
+ | I have initialized it with a name Added. Pls validate.value and a price Added. Pls validate.value. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| Highlight the '''initialize''' block. | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| The '''initializer block''' passes the values to the '''instance variables''' '''@name''' and '''@price'''. | ||
+ | |||
+ | |||
+ | Earlier we had studied about '''instance''' '''variables'''. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| Highlight''' :''' | ||
+ | |||
+ | '''puts product_object_1.name ''' | ||
+ | |||
+ | '''puts product_object_1.price''' | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| Now this '''product instance '''or '''object''' can use the''' instance methods''' '''name''' and '''price'''. | ||
+ | |||
+ | |||
+ | On invoking these '''methods,''' we get the values stored in the '''instance variables'''. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| On the '''terminal '''type- | ||
+ | |||
+ | '''ruby instance_methods.rb >> '''press '''Enter''' | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| Now let us execute this code. | ||
+ | |||
+ | |||
+ | Switch to the '''terminal''' and type: | ||
+ | |||
+ | '''ruby instance_methods.rb ''' | ||
+ | |||
+ | |||
+ | and press '''Enter '''to see the output. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| Point to the output. | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| You will see that it will print the values you initialized the '''object''' with. | ||
+ | |||
+ | |||
+ | Added. Pls validate.Namely, '''laptop '''and '''35,000'''. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| Next let us switch back to '''gedit'''. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| Highlight the initialization of '''product_object_2''' | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| Now let us initialize another '''instance''' or '''object'''. | ||
+ | |||
+ | |||
+ | Let us name this object '''product_object_2'''. | ||
+ | |||
+ | |||
+ | This time let us give a different set of values for name and price. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| Highlight the '''puts '''statements | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| Now let us call the '''instance methods '''“'''name'''” and “'''price'''” for this '''object.''' | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| Switch to the '''terminal '''>> Press up-arrow >> '''Enter.''' | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| Next let us switch back to the terminal and execute the code like before. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| Output on the '''terminal.''' | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| You will notice that it executes successfully and prints out the new values. | ||
+ | |||
+ | |||
+ | This proves that '''instance methods''' are available to all '''objects''' of the '''class Product'''. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| You should now be able to write your own '''instance methods.''' | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| Next let us look at what '''class methods '''are. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| Slide 6 | ||
+ | |||
+ | What are '''class''' '''methods''' | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| '''Class''' '''methods''' are '''methods '''available only to the '''class.''' | ||
+ | |||
+ | |||
+ | These '''methods '''are not available to instances of the '''class.''' | ||
+ | |||
+ | There are different ways you can define class methods. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| Let us look at an example. | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| Switch to '''gedit''' where you have already opened the file '''“class_methods.rb” '''with the class defnition''' '''code typed inside. | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| Create a new file in '''gedit '''as shown in the basic level '''Ruby '''tutorials. | ||
+ | |||
+ | |||
+ | Name it '''class_methods.rb''' | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| I have a working example of '''class methods'''. | ||
+ | |||
+ | |||
+ | You can pause the tutorial, and type the code as we go through it. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| Highlight '''Product.''' | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| I have defined a '''Product''' '''class''' like before. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| Highlight the '''initialize''' code block. | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| I have also called an initializer like before. | ||
+ | |||
+ | |||
+ | However, this time I have added an extra '''argument''' called '''description'''. | ||
+ | |||
+ | I am also using class variables to hold the values unlike instance variables earlier. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| Highlight the first class declaration code. | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| This '''class''' will demonstrate to you the 3 different ways one can define '''class methods.''' | ||
+ | |||
+ | |||
+ | Checkout the '''class method '''declaration for '''name'''. | ||
+ | |||
+ | |||
+ | Here it is defined using the '''class name Product'''. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| Highlight the second class declaration code. | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| Then checkout the second '''class methods''' declaration. | ||
+ | |||
+ | |||
+ | Here I have used the '''self''' '''keyword'''. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| Highlight the second class declaration code. | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| Next, checkout the third way you can define '''class methods'''. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| Now let us implement these '''class''' '''methods'''. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| Highlight the object creation logic. | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| Let us first initialize an object of '''Product''' like before. | ||
+ | |||
+ | |||
+ | This time we are also giving a value for the '''description'''. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| Highlight the lines corresponding the class method invocation. | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| Now let us invoke the '''class''' '''methods''' as shown here. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| I did not get any output on executing this file. | ||
+ | |||
+ | |||
+ | Pls check the code.Now let us execute the code and inspect the output. | ||
+ | |||
+ | |||
+ | |||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| Switch to the '''terminal '''>> type '''ruby class_methods.rb''' >> '''Enter.''' | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| Switch to the terminal and execute the code like before. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| Output on the '''terminal.''' | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| You will notice that it will print the values for '''name, price '''and''' description.''' | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| Now you should be able to write your own class methods. | ||
+ | |||
+ | |||
+ | <nowiki><<PAUSE>></nowiki> | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| Next we shall see what '''accessor methods''' are. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| Slide 5 | ||
+ | |||
+ | What are '''accessor''' '''methods''' | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| '''Ruby''' uses '''accessor''' '''methods''' to access data defined within '''classes'''. | ||
+ | |||
+ | |||
+ | Accessor methods comprise of '''setter methods''' and '''getter methods'''. | ||
+ | |||
+ | |||
+ | '''Setter methods''' set the values. | ||
+ | |||
+ | |||
+ | '''Getter methods''' get those values. | ||
+ | |||
+ | |||
+ | '''Ruby''' uses the '''keyword''' '''attr_accessor''' to declare these '''methods'''. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| Let us look at an example of '''accessor methods'''. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| Switch to '''gedit''' where you have already opened the file '''“accessor_methods.rb” '''with the class defnition''' '''code typed inside. | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| Create a new file in '''gedit '''as shown in the basic level '''Ruby '''tutorials. | ||
+ | |||
+ | |||
+ | Name it '''accessor_methods.rb''' | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| I have a working example of the implementing '''accessor methods'''. | ||
+ | |||
+ | |||
+ | You can pause the tutorial, and type the code as we go through it. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| Highlight “'''attr_accessor'''” line | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| I have defined a '''class''' named '''Product''' in this example. | ||
+ | |||
+ | |||
+ | I have declared '''attr_accessor '''for''' name and price.''' | ||
+ | |||
+ | |||
+ | That is all that is required to use these types of '''methods'''. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| Highlight object creation logic. | ||
+ | |||
+ | |||
+ | |||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| Now let us put it to action. | ||
+ | |||
+ | |||
+ | I have initialized a '''Product''' '''object'''. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| Highlight the '''setter''' logic. | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| Then I have set the '''name''' and '''price''' of the '''product object'''. | ||
+ | |||
+ | |||
+ | This is possible because the '''attr_declaration,''' by default, creates '''methods''' for setting values. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| Highlight the '''getter''' logic. | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| I have then attempted to print the values using the '''getter''' '''methods''' for '''name''' and '''price'''. | ||
+ | |||
+ | |||
+ | These '''getter methods''' were also generated by the declaration of '''attr_accessor'''. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| Now let us execute the code like before. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| You will notice that it prints the values that were set. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| By now you should be able to write your own '''accessor methods'''. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| '''Slide''' | ||
+ | |||
+ | '''Accessor Methods''' | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| One thing to note is that '''accessor methods''' are, by default,''' instance methods.''' | ||
+ | |||
+ | |||
+ | Thus they can be accessed by different '''instances''' of the '''class Product'''. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| Slide | ||
+ | |||
+ | Summary | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| In this tutorial we have learnt about: | ||
+ | |||
+ | * '''instance methods''' | ||
+ | * '''class methods '''and | ||
+ | * '''accessor methods''' | ||
+ | |||
+ | |||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| Slide | ||
+ | |||
+ | Assignment | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| As an assignment: | ||
+ | |||
+ | * Define a '''class''' named '''Temperature''' | ||
+ | * Write an '''instance method '''using '''Ruby's''' '''accessor method''' syntax. | ||
+ | * This '''method''' should calculate the '''Celsius '''for the given '''Fahrenheit.''' | ||
+ | |||
+ | |||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| Slide | ||
+ | |||
+ | About the Spoken Tutorial Project | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| Watch the video available at the following link. | ||
+ | |||
+ | It summarizes the Spoken Tutorial project. | ||
+ | |||
+ | If you do not have good bandwidth, you can download and watch it. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| Slide | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| The Spoken Tutorial Project Team : | ||
+ | |||
+ | |||
+ | Conducts workshops using spoken tutorials | ||
+ | |||
+ | Gives certificates to those who pass an online test | ||
+ | |||
+ | For more details, please write to | ||
+ | |||
+ | contact at spoken hyphen tutorial dot org | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| Slide | ||
+ | |||
+ | Acknowledgments | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| Spoken Tutorial Project is a part of the Talk to a Teacher project. | ||
+ | |||
+ | It is supported by the National Mission on Education through ICT, MHRD, Government of India. | ||
+ | |||
+ | More information on this Mission is available at: spoken hyphen tutorial dot org slash NMEICT hyphen Intro. | ||
+ | |||
+ | |- | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:none;padding:0.097cm;"| Previous Slide | ||
+ | | style="border-top:none;border-bottom:0.05pt solid #000000;border-left:0.05pt solid #000000;border-right:0.05pt solid #000000;padding:0.097cm;"| This is Anjana Nair signing off. Thank you | ||
+ | |||
+ | |} |
Revision as of 14:08, 22 December 2014
Title of script: Object Oriented concept in Ruby
Author: Anjana Nair
Keywords: class
Visual Cue | Narration |
Slide 1 | Welcome to this spoken tutorial on Object Oriented Programming – Methods in Ruby. |
Slide 2 | In this tutorial we will learn to use:
|
Slide 3 | Here we are using
|
Slide 4
Pre-requisites |
To follow this tutorial, you must have a working Internet Connection.
|
Before we begin, recall that we had created “ttt” directory earlier.
| |
Switch to the terminal which has all the commands for creating the directories and the prompt should be in oop-methods directory | Then to ruby-tutorial.
Create a directory names oop-methods and cd into it.
|
Slide 5
What are instance methods? |
What are Instance methods?
|
Switch to gedit where you have already opened the file “instance_methods.rb” with the class defnition code typed inside. | Create a new file in gedit as shown in the basic level Ruby tutorials.
|
I have a working example of the implementing instance methods.
| |
Highlight the “initialize” method block | I have defined a class named Product in this example.
|
Highlight the methods “name” and “price” | I have also defined instance methods named “name” and “price”.
|
Instance methods are defined just like normal methods.
| |
Now let us implement the logic we have. | |
Highlight the poduct object creation code. | Here, I have initialized a Product object and named it as product_object_1.
|
Highlight the initialize block. | The initializer block passes the values to the instance variables @name and @price.
|
Highlight :
puts product_object_1.name puts product_object_1.price |
Now this product instance or object can use the instance methods name and price.
|
On the terminal type-
ruby instance_methods.rb >> press Enter |
Now let us execute this code.
ruby instance_methods.rb
|
Point to the output. | You will see that it will print the values you initialized the object with.
|
Next let us switch back to gedit. | |
Highlight the initialization of product_object_2 | Now let us initialize another instance or object.
|
Highlight the puts statements | Now let us call the instance methods “name” and “price” for this object.
|
Switch to the terminal >> Press up-arrow >> Enter. | Next let us switch back to the terminal and execute the code like before. |
Output on the terminal. | You will notice that it executes successfully and prints out the new values.
|
You should now be able to write your own instance methods. | |
Next let us look at what class methods are. | |
Slide 6
What are class methods |
Class methods are methods available only to the class.
There are different ways you can define class methods. |
Let us look at an example.
| |
Switch to gedit where you have already opened the file “class_methods.rb” with the class defnition code typed inside. | Create a new file in gedit as shown in the basic level Ruby tutorials.
|
I have a working example of class methods.
| |
Highlight Product. | I have defined a Product class like before. |
Highlight the initialize code block. | I have also called an initializer like before.
I am also using class variables to hold the values unlike instance variables earlier. |
Highlight the first class declaration code. | This class will demonstrate to you the 3 different ways one can define class methods.
|
Highlight the second class declaration code. | Then checkout the second class methods declaration.
|
Highlight the second class declaration code. | Next, checkout the third way you can define class methods. |
Now let us implement these class methods. | |
Highlight the object creation logic. | Let us first initialize an object of Product like before.
|
Highlight the lines corresponding the class method invocation. | Now let us invoke the class methods as shown here. |
I did not get any output on executing this file.
| |
Switch to the terminal >> type ruby class_methods.rb >> Enter. | Switch to the terminal and execute the code like before. |
Output on the terminal. | You will notice that it will print the values for name, price and description. |
Now you should be able to write your own class methods.
| |
Next we shall see what accessor methods are. | |
Slide 5
What are accessor methods |
Ruby uses accessor methods to access data defined within classes.
|
Let us look at an example of accessor methods. | |
Switch to gedit where you have already opened the file “accessor_methods.rb” with the class defnition code typed inside. | Create a new file in gedit as shown in the basic level Ruby tutorials.
|
I have a working example of the implementing accessor methods.
| |
Highlight “attr_accessor” line | I have defined a class named Product in this example.
|
Highlight object creation logic.
|
Now let us put it to action.
|
Highlight the setter logic. | Then I have set the name and price of the product object.
|
Highlight the getter logic. | I have then attempted to print the values using the getter methods for name and price.
|
Now let us execute the code like before. | |
You will notice that it prints the values that were set. | |
By now you should be able to write your own accessor methods. | |
Slide
Accessor Methods |
One thing to note is that accessor methods are, by default, instance methods.
|
Slide
Summary |
In this tutorial we have learnt about:
|
Slide
Assignment |
As an assignment:
|
Slide
About the Spoken Tutorial Project |
Watch the video available at the following link.
It summarizes the Spoken Tutorial project. If you do not have good bandwidth, you can download and watch it. |
Slide | The Spoken Tutorial Project Team :
Gives certificates to those who pass an online test For more details, please write to contact at spoken hyphen tutorial dot org |
Slide
Acknowledgments |
Spoken Tutorial Project is a part of the Talk to a Teacher project.
It is supported by the National Mission on Education through ICT, MHRD, Government of India. More information on this Mission is available at: spoken hyphen tutorial dot org slash NMEICT hyphen Intro. |
Previous Slide | This is Anjana Nair signing off. Thank you |