User Tools

Site Tools


notes:cprog:fall2021:projects:oop1

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
notes:cprog:fall2021:projects:oop1 [2021/11/04 18:50] – [A reflection on the concept of inheritance] zswartwonotes:cprog:fall2021:projects:oop1 [2021/11/05 04:01] (current) – [References] hhemler
Line 82: Line 82:
  
 Parent/Child inheritance chains are a beneficial way to add specifications to classes without changing the base class functions.  An example of this may be Animals->Dogs: An animal would have a size, age, living/death status, which are all properties that a dog could inherit, however, a dog could have it's own functions like fur length, temperament, so on and so forth.  This could be extended by creating a dog breed class.  Parent/Child inheritance chains are a beneficial way to add specifications to classes without changing the base class functions.  An example of this may be Animals->Dogs: An animal would have a size, age, living/death status, which are all properties that a dog could inherit, however, a dog could have it's own functions like fur length, temperament, so on and so forth.  This could be extended by creating a dog breed class. 
 +
 +It’s also possible to inherit from a class that is itself derived from another class
 ====A reflection on the concept of inheritance==== ====A reflection on the concept of inheritance====
 (among other things) (among other things)
Line 88: Line 90:
  
 Something Interesting to note is that child class cannot access the private information relating to their parents, but can still have them. For example, if plant(as a parent class of tree) has a private int of age, then tree will also have a private value of age. This is because when inheritance is activated it calls upon the parent's constructor, which can access the parent's private values. Something Interesting to note is that child class cannot access the private information relating to their parents, but can still have them. For example, if plant(as a parent class of tree) has a private int of age, then tree will also have a private value of age. This is because when inheritance is activated it calls upon the parent's constructor, which can access the parent's private values.
 +
 +When something has multiple parents it is called multiple inheritance. When there is more than one tier of inheritance (grandparents) it is called multilevel inheritance. When something has multiple children it is called hierarchical inheritance. When multiple of these occur it is called hybrid inheritance.
 +
 +Inheritance allows us to reuse classes by having other classes inherit their members.
 +
 +It is possible to make a class non-subclassable (sterile) in C++ with the "final" keyword.
 +
 +COOL BUG FACT: Inheritance was first created for the Simula programming languages
 =====Program===== =====Program=====
 Write a program that creates a parent-child class structure. It can be anything, so long as you genuinely implement it and it works. A few possible examples for inspiration: Write a program that creates a parent-child class structure. It can be anything, so long as you genuinely implement it and it works. A few possible examples for inspiration:
Line 102: Line 112:
   * https://www.learncpp.com/cpp-tutorial/basic-inheritance-in-c/   * https://www.learncpp.com/cpp-tutorial/basic-inheritance-in-c/
   * https://www.programiz.com/cpp-programming/public-protected-private-inheritance/   * https://www.programiz.com/cpp-programming/public-protected-private-inheritance/
-  * https://social.msdn.microsoft.com/Forums/sqlserver/en-US/8e65af25-8281-4352-8418-4bd2bf614ba5/smart-pointers-parent-child-relationships?forum=vcgener 
   * https://www.w3schools.com/cpp/cpp_inheritance.asp   * https://www.w3schools.com/cpp/cpp_inheritance.asp
   * https://www.tutorialspoint.com/cplusplus/cpp_inheritance.htm   * https://www.tutorialspoint.com/cplusplus/cpp_inheritance.htm
notes/cprog/fall2021/projects/oop1.1636051852.txt.gz · Last modified: 2021/11/04 18:50 by zswartwo