Topic 11: Revision of OO Concepts
	Synopsis
	
        
- What is "abstraction¤"?
        
  - What types of abstraction¤ are there?
        
  - Why is abstraction¤ important in the real world?
        
  - Why is abstraction¤ important in programming?
        
  
      - Give examples of abstraction¤ 
        mechanisms in C++. 
    
 
	
        
- What is "encapsulation¤"?
        
  - What are the benefits of encapsulation¤?
        
  - What are the drawbacks of encapsulation¤?
        
  - If computing is about making data available in useful
        	   forms, why is data hiding important?
        
  - How does encapsulation¤ relate to abstraction¤?
	
 
	
        
- What is "weak typing¤¤"?
        
  - What is "strong typing¤¤"?
        
  
      - Which kind of typing¤ 
        does C++ have? 
          - What is "static typing¤¤"?
        
  - What is "dynamic typing¤¤"?
        
  
      - Which kind of typing¤ 
        does C++ have? 
    
 
	
        
- What is "inheritance"?
        
  - Why is inheritance useful?
        
  - In an OO programming language what kinds of things
        	   can be inherited?
        
  - What is the relationship between a class¤ and it
        	   parent class¤¤?
        
  - What is "multiple inheritance¤"?
        
  - Why do we say that multiple inheritance¤ creates
        	   "directed acyclic inheritance graphs"?
        
  - How does inheritance relate to abstraction¤?
	
 
	
        
- What is "polymorphism¤"?
        
  - How does polymorphism¤ relate to inheritance?
        
  - How does polymorphism¤ relate to abstraction¤?
        
  - What is "dynamic dispatch¤¤"?
	
 
	
        
- What is "genericity¤"?
        
  - How does genericity¤ relate to abstraction¤?
        
  - Why isn't it always sufficient just to provide a
        	   generic¤ version of a particular function?
	
 
  This material is part of the CSE2305 - Object-Oriented 
  Software Engineering course.
  Copyright © Jon McCormack & Damian Conway, 1998–2005. All rights 
  reserved.