OOP Review
Types of Polymorphism
1. Overriding 2. Overloading
BLANK is the emphasis on ideas, qualities and properties rather than on the particulars.
Abstraction
The term API stands for BLANK
Application Programming Interface
LSP
Liskov Substitution Principle: Derived classes must be substitutable for their base classes.
Can an interface be instantiated?
NO
Overriding
Run-time polymorphism is determined at run-time based on the type of the object
SRP
Single Responsibility Principle: A class should have ONLY ONE reason to change
Method signature
The name and list of parameters of a method
When is an interface useful?
When implementation must be interchangeable
How to identify classes
1. Identify a full list of operations of the system and granular level use cases 2. Group each function to form classes; should support reusability and increase expandability/maintainability of the system. Identify the modules first, then dig deeper to find classes
Benefits of Encapsulation
1. You can make changes to a class without breaking other code using that class. 2. You can handle situations where the class is being used improperly in such a way that the code doesn't fail.
Specialization
An "is-a" relationship between two classes, represented by inheritance. Example: Dog "is-a" mammal
Object
An instance of a class or type of data.
An abstract class can implement how many interfaces?
As many as you want
Techniques classes use to link with each other
Association Aggregation Composition
Why must the superclass' code be carefully documented?
Because that code is not physically in the subclass.
Class
Blueprint/prototype from which objects are created
Code re-use
Complex objects only need to be coded once; you can use classes that have already been created by others.
DIP
Dependency Inversion Principle: Depend on abstractions, not on concretions.
Hiding internal data from the outside world, and accessing it only through publicly exposed methods is known as data BLANK
Encapsulation
Example of Composition
Example of Composition Courses exist only within their department; therefore if a department no longer exists, neither do its courses.
Encapsulation
Hiding the internal state of an object (usually a private variable) and requiring all interaction to be performed through an object's accessor and mutator methods. ( or getter and setter methods). Example: In a Bicycle class, method changeGear() could be implemented so as to only accept values between 1 and 6
Pluggability/Debugging Ease
If an object is causing problems, you can easily remove it and put something else in its place. Example: replace a bolt that is broken, not the whole machine.
What is encapsulation?
It describes the idea of bundling data and methods that work on that data within one unit, e.g., a class in Java. This concept is also often used to hide the internal representation, or state, of an object from the outside.
What is OOP?
It stands for Object Oriented Programming. Object-Oriented Programming (OOP) instead of the old procedural programming languages methods (That creates the spaghetti code problem). Everything in OOP is grouped as self sustainable "objects". This modular method promotes code reusability and is easier to debug.
Can you override a method in a subclass that has a different signature in its superclass?
NO, in order to override the method must have the same signature in both the subclass and the base (super) class.
Can Abstract Classes be instantiated?
No
Parameterization
One or more parts of an entity are replaced with a name that is new to the entity (a parameter)
OCP
Open Closed Principle: You should be able to extend any classes' behaviors without modifying the class.
When a class inherits from an abstract class, you MAY:
override virtual methods/properties
A namespace that organizes classes and interfaces by functionality is called a BLANK
package
Mutator
public methods used to modify the state of an object while hiding the implementation of the method
Generalization
replaces multiple entities which perform similar functions with a single construct.
Behavior
set of activities performed by an object
Modularity?
source code for an object can be written/maintained independently of source code for other objects. objects can be easily passed around the system once they've been created.
An accessor is any public method that gives information about the BLANK of an object
state
5 Principles of designing a Class
1. SRP (Single Responsibility Principle) 2. OCP (Open Closed Principle) 3. LSP (Liskov Substitution Principle) 4. DIP (Dependency Inversion Principle) 5. ISP (Interface Segregation Principle)
What is the only type of class that does NOT have to define all methods in an interface that it is implementing?
Abstract class; it doesn't matter because it can't be instantiated, BUT those methods that are not defined in the abstract class MUST be defined by its subclasses
array vs arraylist?
Array is a fixed length data structure whereas ArrayList is a variable length Collection class.
Information-Hiding
By interacting only with object's methods, details of internal implementation stay secret from outside world.
Overloading
Compile-time polymorphism: the compiler determines which method will be executed based on which parameters were supplied. Multiple methods with different signatures (different parameters).
How does abstraction manage complexity?
Decomposes complex systems into smaller components; You know what behavior to expect from the object even before it is fully implemented, so it won't have a negative impact on later coding if it isn't completely finished.
BLANK places emphasis on similarities between objects
Generalization
What is inheritance?
Inheritance enables new objects to take on the properties of existing objects.
Should the methods in an interface be public or private?
MUST be public
Benefits of Objects?
Modularity Information-Hiding Code re-use Pluggability and debugging ease
What is multiple inheritance? Why is it bad?
Multiple Inheritance is a feature of object oriented concept, where a class can inherit properties of more than one parent class. The problem occurs when there exist methods with same signature in both the super classes and subclass. On calling the method, the compiler cannot determine which class method to be called and even on calling which class method gets the priority.
Does Java allow multiple inheritance?
No, Java supports single and multi level inheritance but not multiple inheritance.
How many superclasses can a subclass have?
ONLY ONE
What is an object?
Object refers to a particular instance of a class, where the object can be a combination of variables, functions, and data structures.
What is OOP?
Object-Oriented Programming is a programming style related to concepts of Class, Objects, and various other concepts like Inheritance, Abstraction, Encapsulation, and Polymorphism.
An Abstract class can ONLY be used as a ...?
Superclass
What is abstraction?
The process of abstraction in Java is used to hide certain details and only show the essential features of the object. In other words, it deals with the outside view of an object (interface).
What is the use of a public constructor in an abstract class?
There is none, because an abstract class cannot be instantiated.
Primary goal of software architecture
To define the non-functional requirements of a system and define the environment;
What is inheritance?
When subclasses can inherit states/behaviors of superclasses
Can interfaces inherit other interfaces?
Yes
What is a class?
a class is a blueprint for creating objects.
class library?
a set of packages
Method Overriding
allows a subclass to change the implementation of a method already provided by a superclass; both classes MUST use the same signature for the method to override.
How to use the changeGear() method on a Bicycle object bike1?
bike1.changeGear();
How does generalization manage complexity?
collects individuals into groups and provides a representative which is used to specify an individual of the group.
Method Overloading
defining several methods that have the same name but different signatures.
What is Abstraction?
development of classes/objects/types in terms of interfaces and functionality, instead of implementation details; development of a software object to represent a real-world object.
A software object's state is stored in BLANK
fields
Association
general term that defines the relationship between two classes; NO OWNERSHIP
Main benefit of abstraction?
manages complexity
Accessor
method used to ask an object about itself
A software object's behavior is exposed through BLANK
methods (functions)
Operator Overloading
operators have different behaviors depending on the types of its arguments Example: with strings, + concatenates, but with ints, + adds?
When a class inherits from an abstract class, you MUST:
override all of its methods/properties that are declared to be abstract.
Common behavior can be defined in a BLANK and inherited into a BLANK using the BLANK keyword
superclass, subclass, extends
What do the Java API's packages represent? Give examples.
tasks for general purpose programming: String, File, Socket, some for developing GUIs.
Example of Aggregation
teachers belong to multiple departments, so if a department no longer exists, the teacher still does.
Programming languages provide generalization through:
variables, parameterization, generics, and polymorphism
Aggregation
weak ownership between two classes; the "owned" class can exist without its owner
Can an interface contain properties?
yes; must be public/abstract
What is a constructor?
A constructor is a special method of a class or structure in object-oriented programming that initializes an object of that type.
What Is a Package?
A package is a namespace for organizing classes and interfaces in a logical manner. It makes large software projects easier to manage.
What is a package?
A package is a namespace that organizes a set of related classes and interfaces.
What is the only type of class that does NOT have to define all methods in an interface that it is implementing?
Abstract class; it doesn't matter because it can't be instantiated, BUT those methods that are not defined in the abstract class MUST be defined by its subclasses.
What is an abstract class?
Abstract classes, unlike interfaces, are classes. There are more expensive to use because there is a lookup to do when you inherit from them. Abstract classes look a lot like interfaces, but they have something more : you can define a behavior for them.
Primary means of managing complexity in large programs.
Abstraction
What is abstraction?
Abstraction is one of the key concepts of object-oriented programming (OOP) languages. Its main goal is to handle complexity by hiding unnecessary details from the user. That enables the user to implement more complex logic on top of the provided abstraction without understanding or even thinking about all the hidden complexity.
Difference between an interface and a class?
An interface cannot be instantiated, and an interface is empty; it contains declarations of properties/methods but no implementations; a class must contain implementations.
Difference between an interface and an ABSTRACT class?
An interface contains only the constants/methods that a class. An abstract class CAN contain fully-implemented methods and properties other than constants. Methods of interfaces must be defined as public, whereas methods in abstract classes can have any visibility. A subclass can only extend one superclass, whereas interfaces can implement multiple other interfaces. A subclass can define abstract methods with the same or less restrictive visibility, whereas when implementing an interface the methods must have the exact same visibility.
Difference between an interface and an ABSTRACT class?
An interface contains the constants/methods that a class implementing it should have, but does NOT contain the bodies of methods or values other than constants. An abstract class CAN contain fully-implemented methods and properties other than constants. Methods of interfaces must be defined as public, whereas methods in abstract classes can have any visibility. A subclass can only extend one superclass, whereas interfaces can implement multiple other interfaces. A subclass can define abstract methods with the same or less restrictive visibility, whereas when implementing an interface the methods must have the exact same visibility.
What Is an Interface?
An interface is a programming structure/syntax that allows the computer to enforce certain properties on an object (class). For example, say we have a car class and a scooter class and a truck class. Each of these three classes should have a start_engine() action.
What is interface?
An interface is a programming structure/syntax that allows the computer to enforce certain properties on an object (class). For example, say we have a car class and a scooter class and a truck class. Each of these three classes should have a start_engine() action.
What is interface?
An interface is a programming structure/syntax that allows the computer to enforce certain properties on an object (class). For example, say we have a car class and a truck class. Each of these two classes should have a start_engine() action.
Benefits of software architecture
Controls Complexity Enforces best practices Consistency/uniformity Increases predictability Enables re-use
Major Principles of Object-Oriented Programming
Encapsulation Abstraction Inheritance Polymorphism
How many subclasses can inherit from the same superclass?
Infinitely many
ISP
Interface Segregation Principle: Make fine grained interfaces that are client specific.
What is a benefit of using packages?
It allows developers to focus on the design of an application and NOT the technical stuff that makes it work.
What does a class consist of?
Name, attributes and operations (state and behavior)
Real-world objects contain BLANK and BLANK.
State, behavior
Composition
Strong type of association between two classes with full ownership.
What is the main benefit of using inheritance?
The subclass contains all of the methods/fields of the superclass, but the subclass' code focuses on the unique aspects, making code simpler and easier to read.
A blueprint for a software object is called a BLANK
class
A collection of methods with no implementation is called an BLANK
interface
Should an accessor be public or private?
must be public
Superclass
only contain info common to all of its subclasses
What is polymorphism? What are the types of polymorphism?
polymorphism refers to a programming language's ability to process objects differently depending on their data type or class. Method overloading is an example of static polymorphism, while method overriding is an example of dynamic polymorphism.
Constructor in Java
Constructors are used to initialize the object's state. Like methods, a constructor also contains collection of statements(i.e. instructions) that are executed at time of Object creation.
A BLANK separates implementation and defines structure.
interface