Presentation on theme: "INFO 16029 Problem Solving and Programming Logic INFO 16029 Problem Solving and Programming Logic Inheritance."— Presentation transcript:
INFO Problem Solving and Programming Logic INFO Problem Solving and Programming Logic Inheritance
5/11/2015Wendi Jollymore, ACES2 What is Inheritance? A type of relationship between classes. There are a few different kinds of class relationships Inheritance is also called Generalization Occurs when one specific class “inherits” the characteristics and behaviors of a more general class It’s easier to understand with examples
5/11/2015Wendi Jollymore, ACES3 What is Inheritance? Which of these are valid/true assertions? All cars are vehicles All airplanes are vehicles All vehicles are cars We can say that: A car is a type of vehicle A bike is a type of vehicle A UFO is a type of vehicle True False
5/11/2015Wendi Jollymore, ACES4 What is Inheritance? We often say that Inheritance is an “is a” relationship A car is a vehicle A bike is a vehicle A fork is a utensil A cat is a feline One term is more general, the other more specific Vehicle, Utensil, Feline are general Car, bike, fork, cat, are specific
5/11/2015Wendi Jollymore, ACES5 What is Inheritance? What characteristics and behaviors to all vehicles share? Characteristics: Colour, number of wheels, number of passengers, brand or model Behaviors: Start, stop, accelerate/decelerate
5/11/2015Wendi Jollymore, ACES6 What is Inheritance? What characteristics/behaviors are different between a car and an airplane? Airplanes can fly Cars can reverse
5/11/2015Wendi Jollymore, ACES7 What is Inheritance In programming, the more general class is called the parent class or super class The more specific classes are called child classes or sub classes. Parent Class Child Class Child Class Child Class In Java, a child class is only allowed one parent class… …however, a parent can have many child classes
5/11/2015Wendi Jollymore, ACES8 What is Inheritance Examples Utensils ForkSpoonKnife Vehicles CarAirplaneBicycle
5/11/2015Wendi Jollymore, ACES9 What is Inheritance? A child class contains the characteristics and behaviors of its parent It might also have characteristics and behaviors of its own It might also have the same behaviors as the parent, but they just work differently Example: You can drive a car and drive a plane, but not the same way
5/11/2015Wendi Jollymore, ACES10 Example Full time employees work 40 hours per week get paid an annual salary weekly pay = annual salary / number of full weeks they work Part time employees can work a varying number of hours per week weekly pay = #of hours worked * hourly rate.
5/11/2015Wendi Jollymore, ACES11 Example Sales employees have varying hours weekly pay = commission amount = a percentage of their weekly sales they also get a flat lump sum or base pay per week Temporary sales employees just like regular sales employees except that they don't get the base pay each week, just commissions
5/11/2015Wendi Jollymore, ACES12 Example In a payroll program, what data would we need to know about all employees? First name, last name, sin, employee id, address, phone number, city, province, postal code, etc. Data used to calculate pay for employees depends on the type of employee!
5/11/2015Wendi Jollymore, ACES13 Example Full time employees: annual salary, weeks worked Part time employees hours worked, hourly rate Sales employees weekly sales, commission rate, base pay. Temporary sales employees weekly sales, commission rate.
5/11/2015Wendi Jollymore, ACES14 Example Writing each of the 4 classes with all of the data and methods would be tedious! We usually take the common things and put them in a parent class Then the child classes contain all the “extras” And modify parent methods, if needed
5/11/2015Wendi Jollymore, ACES15 Example Employee Class: Employee Data Members: first name last name employee id sin phone number address city province postal code Methods: calculateWeeklyPay() printCheck()
Example Child Classes: 5/11/2015Wendi Jollymore, ACES16 FullTimeEmployee extends Employee Data Members: annual salary weeks worked Methods: calculateWeeklyPay() PartTimeEmployee extends Employee Data Members: rate of pay hours worked Methods: calculateWeeklyPay()
Example Note that SalesEmployee and TempSalesEmployee are very similar: 5/11/2015Wendi Jollymore, ACES17 TempSalesEmployee extends Employee Data Members: commission rate weekly sales Methods: calculateWeeklyPay() SalesEmployee extends Employee Data Members: commission rate weekly sales base pay Methods: calculateWeeklyPay()
Example We could make Sales Employee a child class of Sales Employee 5/11/2015Wendi Jollymore, ACES18 TempSalesEmployee extends Employee Data Members: commission rate weekly sales Methods: calculateWeeklyPay() SalesEmployee extends TempSalesEmployee Data Members: base pay Methods: calculateWeeklyPay()
5/11/2015Wendi Jollymore, ACES19 Example
5/11/2015Wendi Jollymore, ACES20 One More Example Vessels have a length characteristic and can steer(). Sailboats and Destroyers are Vessels both have length and can steer(). Sailboats have sails and can raiseJib(), but not all vessels have these. Destroyers have deckPlating and can fireGuns(), but not all vessels have these. What would a hierarchy chart look like with the classes Vessel, Sailboat, and Destroyer?
5/11/2015Wendi Jollymore, ACES21 Possible Solution
5/11/2015Wendi Jollymore, ACES22 Exercise For each of the following, which classes would be parent classes, which would be child classes? Draw the hierarchy charts! Loafer, Sneaker, Shoe, Sandal Checking Account, Bank Account, Savings Account Cat, Cow, Feline, Animal, Chicken, Bovine, Avian, Tiger, Yak, Parrot
5/11/2015Wendi Jollymore, ACES23 Robots and Inheritance Look up the RobotSE class in the documentation (class discussion)
5/11/2015Wendi Jollymore, ACES24 Creating Your Own Robot You can use Inheritance to create your own Robot You can give it your own methods like faceDirection() and makeBox() How about a collectThings() method that gives the robot a certain number of coloured things? We’ll do this in class