1 / 23

Chapter 10 Object Inheritance

Chapter 10 Object Inheritance . Introduction to Computer Science Using Ruby . Inheritance . Classes can be defined so as to have relationships with other classes The most basic of these relationships is called inheritance No need to redefine similar parts of classes

deidra
Download Presentation

Chapter 10 Object Inheritance

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. (c) 2012 Ophir Frieder et al Chapter 10 Object Inheritance Introduction to Computer Science Using Ruby

  2. Inheritance • Classes can be defined so as to have relationships with other classes • The most basic of these relationships is called inheritance • No need to redefine similar parts of classes • A class can inherit properties from another class • Inheritance can represent the relationship between a generic ball, a baseball, a tennis ball, and a ping pong ball: they are all spherical objects (c) 2012 Ophir Frieder et al

  3. Inheritance Account class: Attributes Shared: • We expand our view of accounts to create both a checking and a savings account • Analyze what they have in common • Have a balance • Can withdraw money • Can deposit money (c) 2012 Ophir Frieder et al

  4. Inheritance Parent Class or Superclass: Child Class or Subclass: • Defines attributes that both types of accounts can use • Defines the similarities in the relationship • Eliminates the need to duplicate common data and methods • Defines the differences • i.e., checking and savings accounts • Main differences: • Cannot withdraw beyond the minimum balance from a savings account • Savings account generates interest (c) 2012 Ophir Frieder et al

  5. Inheritance • The checking and savings account classes will define the differences • These are the child class or subclass • The main differences are: • You cannot withdraw beyond the minimum balance from a savings account • A savings account generates interest (c) 2012 Ophir Frieder et al

  6. Example 10.1: Savings Account Version #1 1 require_relative'../chapter_09/account_5.rb' 2 3 class SavingsAccount < Account 4 def initialize(balance, name, phone_number, interest, minimum) 5 super(balance, name, phone_number) 6 @interest = interest 7 @minimum = minimum 8 end 9 10 def accumulate_interest 11 @balance += @balance * @interest 12 end 13 end (c) 2012 Ophir Frieder et al

  7. class Account def initialize(balance, name, phone_number) @balance = balance @name = name @phone_number = phone_number end def deposit(amount) @balance += amount end def withdraw(amount) @balance -= amount end (c) 2012 Ophir Frieder et al

  8. def display puts "Name: " + @name puts "Phone number: " + @phone_number.to_s puts "Balance: " + @balance.to_s end def transfer(amount, target_account) @balance -= amount target_account.deposit(amount) end def status return @balance end end (c) 2012 Ophir Frieder et al

  9. < defines inheritance in Ruby 1 require_relative'../chapter_09/account_5.rb' 2 3 class SavingsAccount < Account 4 def initialize(balance, name, phone_number, interest, minimum) 5 super(balance, name, phone_number) 6 @interest = interest 7 @minimum = minimum 8 end 9 10 def accumulate_interest 11 @balance += @balance * @interest 12 end 13 end (c) 2012 Ophir Frieder et al

  10. Account class is the parent class 1 require_relative'../chapter_09/account_5.rb' 2 3 class SavingsAccount < Account 4 def initialize(balance, name, phone_number, interest, minimum) 5 super(balance, name, phone_number) 6 @interest = interest 7 @minimum = minimum 8 end 9 10 def accumulate_interest 11 @balance += @balance * @interest 12 end 13 end (c) 2012 Ophir Frieder et al

  11. SavingsAccountis the child class 1 require_relative'../chapter_09/account_5.rb' 2 3 class SavingsAccount < Account 4 def initialize(balance, name, phone_number, interest, minimum) 5 super(balance, name, phone_number) 6 @interest = interest 7 @minimum = minimum 8 end 9 10 def accumulate_interest 11 @balance += @balance * @interest 12 end 13 end (c) 2012 Ophir Frieder et al

  12. 1 require_relative'../chapter_09/account_5.rb' 2 3 class SavingsAccount < Account 4 def initialize(balance, name, phone_number, interest, minimum) 5 super(balance, name, phone_number) 6 @interest = interest 7 @minimum = minimum 8 end 9 10 def accumulate_interest 11 @balance += @balance * @interest 12 end 13 end “super” is a call to the parent class’ constructor (c) 2012 Ophir Frieder et al

  13. 1 require_relative'../chapter_09/account_5.rb' 2 3 class SavingsAccount < Account 4 def initialize(balance, name, phone_number, interest, minimum) 5 super(balance, name, phone_number) 6 @interest = interest 7 @minimum = minimum 8 end 9 10 def accumulate_interest 11 @balance += @balance * @interest 12 end 13 end The variables are unique to the SavingsAccountclass (c) 2012 Ophir Frieder et al

  14. 1 require_relative'../chapter_09/account_5.rb' 2 3 class SavingsAccount < Account 4 def initialize(balance, name, phone_number, interest, minimum) 5 super(balance, name, phone_number) 6 @interest = interest 7 @minimum = minimum 8 end 9 10 def accumulate_interest 11 @balance += @balance * @interest 12 end 13 end New method for the child class (c) 2012 Ophir Frieder et al

  15. Inheritance • The SavingsAccount class can do more than the method it defined • It inherits all of the super class’ variables and methods Table 10.1: SavingsAccount Inherited Summary (c) 2012 Ophir Frieder et al

  16. Inheritance: Polymorphism • Because SavingsAccount is subclass of Account, it can use the transfer method to send funds to an Account object • Does have its limits • Cannot use the subclasses properties on a superclass • Subclass has features the superclass does not • Cannot use accumulate_interest() method on an Account object (c) 2012 Ophir Frieder et al

  17. Basic Methods Overriding • It is sometimes convenient to alter methods that already exist in a superclass • The SavingsAccount class needs to make sure the balance does not go below the minimum • To achieve this, the SavingsAccount class will need to override the withdraw method • Needs to define its own withdraw functionality (c) 2012 Ophir Frieder et al

  18. Example 10.2: SavingsAccount Version #2 1 require_relative'../chapter_09/account_5.rb' 2 3 class SavingsAccount < Account 4 def initialize(balance, name, phone_number, interest, minimum) 5 super(balance, name, phone_number) 6 @interest = interest 7 @minimum = minimum 8 end 9 10 def accumulate_interest 11 @balance += @balance * @interest 12 end 13 (c) 2012 Ophir Frieder et al

  19. Example 10.2 Cont’d 14 def withdraw(amount) 15 if (@balance - amount >= @minimum) 16 @balance -= amount 17 else 18 puts "Balance cannot drop below: " + @minimum.to_s 19 end 20 end 21 end Withdraw has been overridden by defining a method in the subclass with a new name (c) 2012 Ophir Frieder et al

  20. Accessing the Superclass • In many cases, the overriding methods are similar to the methods they override • Instead of repeating code, we can call the superclass inside an overridden method • Simply insert the word super with all the parameters that are needed (c) 2012 Ophir Frieder et al

  21. Example 10.3: SavingsAccount Version #3 1 require_relative'../chapter_09/account_5.rb' 2 3 class SavingsAccount < Account 4 def initialize(balance, name, phone_number, interest, minimum) 5 super(balance, name, phone_number) 6 @interest = interest 7 @minimum = minimum 8 end 9 10 def accumulate_interest 11 @balance += @balance * @interest 12 end 13 (c) 2012 Ophir Frieder et al

  22. Example 10.3 Cont’d 14 def withdraw(amount) 15 if (@balance - amount >= @minimum) 16 super(amount) 17 else 18 puts "Balance cannot drop below: " +@minimum.to_s 19 end 20 end 21 end The difference for this example is small but can be larger for more complex programs (c) 2012 Ophir Frieder et al

  23. Summary • Inheritance: classes can be created from other classes and use the resources of the parent class • The parent class or the superclass, defines the relationship with the child class or subclass • Subclasses inherit both data and methods from their parent class • In some cases, methods used by the child class need to be overridden (c) 2012 Ophir Frieder et al

More Related