1 / 32

More Inheritance

Stay updated with important dates for Inheritance, attend the Project 1 review session, and learn about pair programming benefits and techniques.

rnesbit
Download Presentation

More 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. More Inheritance 7/2/2009

  2. Important Dates • Project 1 - Check-off • Thursday 7/02/2009 ready BEFORE lab • Review Session • Sunday 7/05/2009 – 306 Soda 1-4pm • Midterm 1 • Tuesday 7/07/2009 – 10 Evans 5-6pm • Covers everything through Monday’s lab • Project 2 released • Thursday 7/09/2009 • Project 1 due • Monday 7/13/2009 – 10pm

  3. equals(Object o) Did you understand Wednesday’s lab?

  4. ← Uses a1’s dynamic type Animal a1 = new Dog(); Animal a2 = new Dog(); Dog d1 = new Dog(); a1.sniff(d1); d1.sniff(a1); a1.sniff(a2); ← Uses a1’s static type ← Uses a1’s dynamic type Uses a2’s static type

  5. Inheritance • Compilation: • CALLER: It makes sure that the static type of the object has the appropriate method • ARGS: It makes sure that the method takes in the static type of the arguments • Run-time: • CALLER: When you call a method on an object it looks for the method starting at the object’s dynamic type • ARGS: When you pass an object as an argument, it looks for a method with that static type

  6. Dog age bites Animal a1 = new Dog(); Animal a2 = new Dog(); Dog d1 = new Dog(); a1.sniff(d1); d1.sniff(a1); a1.sniff(a2); 0 true Dog age bites 0 main Animal a1 Animal a2 Dog d1 true Dog age bites 0 true

  7. What about equals(Object o) ArrayList was using an Object reference Object o1 = new Animal(); Object o2 = new Animal(); o1.equals(o2); If others will call your methods with more generic references, you want to provide a method that takes in an Object

  8. Regular Inheritance (extends)

  9. Animals Pets Eat Bananas

  10. Interfaces • I have a GREAT idea! • Everyone will want to make Pets that can • eatKibble() • sitOnLap() • How?!?! • I don’t care!!!!

  11. Animals Pets Eat Bananas

  12. The Petinterface

  13. Dog can implementthe Petinterface

  14. Cat can implementthe Petinterface

  15. We can have a Petremote control(Pet reference) Pet p1 = new Dog(); Pet p2 = new Cat(); p1.eatKibble(); p2.sitOnLap();

  16. Can we have a Pet object? Pet p1 = new Pet(); No! You can’t create an object of an interface!

  17. Interfaces can be cool!!!

  18. Example • The sort method of the Array class promises to sort an array of objects, but under one condition: the objects in the array must implement the Comparable interface: public interface Comparable { intcompareTo(Object other); }

  19. Summary of Interfaces • Interfaces don’t implement ANY methods • Just put a semicolon at the end of the method • Classes can implement multiple interfaces • To implement an interface you must write all of the methods that the interface defines

  20. Cookies!

  21. Abstract Classes (less lazy than Interfaces) • I have a GREAT idea! • Everyone will want to make Cookies that can have these methods: • ingredients() • isDelicious() • How?!?! • isDelicious() is pretty simple, I’ll write that one • ingredients() ?!? Sounds too hard! I’ll make that abstract

  22. Abstract Class Cookie

  23. ChocolateChipCookie can extend the Abstract class Cookie

  24. GirlScoutCookiecan extend the Abstract class Cookie

  25. We can have a Cookie remote control(Cookie reference)

  26. Can we have a Cookie object? Cookie p1 = new Cookie(); No! You can’t create an object of an abstract class!

  27. Abstract Class Summary • Label an Abstract class as abstract • Label any methods that you don’t want to implement as abstract • Your children MUST write all of the abstract methods • Instance variables in the abstract class will be available in the child class • You can only extend one Class (abstract or otherwise)

  28. How to do Pair Programming? • Share one computer with your partner. • The “Driver” types and uses the mouse. • The “Navigator” watches, discusses and focuses on the big picture. • Take turns (about every 30 minutes) to switch roles.

  29. Why to do Pair Programming? • Writing code is easy compared to making code work! • The bugs are the part that takes a long time • Clearer programs, better designs, fewer bugs. • Great to talk about at an interview! • “Overcoming difficult problems” • Research Study – Error free code went from 70% to 85% with pairs. So 30% to 15% or a 50% reduction in bugs. Source: Wikipedia: Pair Programming

  30. Working with Partners • Use pair programming! • Talk about other commitments • Travel plans • Other classes • Jobs • Assume that if you haven’t seen their code – it doesn’t exist! • Talk to your partner the moment you get stuck

More Related