D.2 - Features of OOP

0.0(0)
studied byStudied by 2 people
learnLearn
examPractice Test
spaced repetitionSpaced Repetition
heart puzzleMatch
flashcardsFlashcards
Card Sorting

1/20

Study Analytics
Name
Mastery
Learn
Test
Matching
Spaced

No study sessions yet.

21 Terms

1
New cards
Encapsulation
\
* Encapsulation is the technique of making the states in a class private and providing access to those states via public behaviors (methods). 
* Data and actions are limited to the object in which they are created. 
* It is a form of data hiding. If a state is declared private it cannot be accessed by any method outside the class.
2
New cards
Inheritance
\
* A process whereby one object inherits the properties of another object (called super / sub or parent / child classes).
* This is called an “is-a” relationship. 
* In java you can only inherit from one class at a time.
3
New cards
Keyword Inheritance
\
* The keyword used is extends. 
* In programming inheritance is implemented by using the keyword extends in the subclass to connect it to its super class. 
4
New cards
Polymorphism
\
* It means that two methods can have the same name but different contents / functions.
* Methods have the same name but different parameter lists and processes. 
5
New cards
Types of Polymorphism
* Overloading
* Overriding
6
New cards
Overloading
* The same class
* Allows different methods to have the same name, but different signatures where signature can differ by the number of input parameters or type of input parameters or both. 
7
New cards
Overriding
* Different classes / inheritance


* Allows a subclass to provide a specific implementation of a method that is already provided by one of its super classes. 
* When a method in a subclass has the same name, same parameters, or signature, and same return type as a method in its super-class then the method in the subclass overrides the method in the superclass.
8
New cards
Overloading versus Overriding
\
* Overloading is about the same function having different signatures (usually in the same class).
* Overriding is about the same function, same signature, but different classes connected through inheritance.
9
New cards
Advantages of Encapsulation
* Data hiding
* Reusability
* Testing code ease
* Increased flexibility
10
New cards
Data Hiding
\
* The user will have no idea about the inner implementation of the class (implies security)
* It will not be visible to the user how the class is storing values in the variables.
* They only know that we are passing the values to a setter method and variables are getting initialized with that value.
11
New cards
Reusability (Encapsulation)
\
* Encapsulation also improves the reusability of the code (write once / use many times)
* Methods can be copied to different / new classes and help meet new requirements.
12
New cards
Ease of testing code (Encapsulation)
\
* Encapsulated code is easy to test with unit testing (a type of automated testing that tests many different types of data quickly)
* It is easier to fix larger problems if you know which method is returning the wrong response.
13
New cards
Increased Flexibility (Encapsulation)
\
* We can make the variables of the class as read-only or write-only depending on our requirement
* If we wish to make the variables as read-only then we can omit the setter methods
* Or if we wish to make the variables as write-only then we have to omit the get methods.
14
New cards
Advantages of Inheritance
* Minimizes the amount of duplicate code
* Common code becomes the superclass
* Organizes code better
* Using a superclass has better abstraction
* Makes code more flexible to change
* Can make application code more flexible to change as classes that inherit from a common super class can be used interchangeably.
* a parent object holds common data `and` actions, which enhances reuse and reduces maintenance overheads
15
New cards
Advantages of Polymorphism
* Overriding
* It allows a general class to specify methods that will be common to all of its derivatives while allowing sub classes to define the specific implementation of some or all of those methods. 
* One interface, multiple methods - overridden methods
* Allow you to call methods of any of the derived classes without even knowing the type of derived class object.
* Overloading
* Do not need different names for functions doing the same thing
16
New cards
Advantages of Libraries of Objects
\
* Time saving:
* Sorting algorithms do not have to be re-invented
* Complex algorithms and processes can be reused
17
New cards
Libraries of Objects
\
* JUnit (64% of top Java projects)
* Testing framework for java programs
* SLF4J 22% 
* Allow the end-user to plug-in the desired logging system
* Log4j 16.76%
* A tool to help the programmer output log statements to a variety of output targets
* Google Guava 15.6%
* Common libraries for Java, mainly developed by Google engineers.
* Apache-commons 12.63%
* Commons proper is dedicated to one goal: create and maintain reusable Java components.
18
New cards
Disadvantages of OOP
* Increased complexity of small problems
* OOP typically involves more lines of code than procedural programs.
* OOP are typically slower than procedure-based programs, as they typically require more instructions to be executed.
* Unsuited to particular classes of problems
* Programs may lend themselves well to functional-programming style, logic-programming style, or procedural-based programming, and using object oriented will not create efficient programs. 
* Problems that tend to be small and involve only one data source.
19
New cards
Programming Teams Advantages
* Speed of completion (concurrent working)
* Information hiding to reduce module dependencies
* Developers only need to know the name and required parameters to use a behavior, they can use code without needing to understand how it functions
* Security benefit as coders do not have access to the actual data themselves
* Expertise in a narrow field
* Assembling a complex project requires many different skills. 
* By allowing each part of the program to be programmed by an expert in that field, the quality of the final product is higher than one by a jack of all trades.
20
New cards
Programming Teams Disadvantage
You need a common language to resolve problems
21
New cards
Advantages of Modularity
* Easier debugging and testing
* By having smaller modules to test, it is easier to find and fix bugs
* The number of tests that have to be run to confirm a module is fully operational is reduced according to the number of functions in a particular module.
* Speedier completion
* By breaking the project into smaller modules, you could save time by finding modules that already exist in libraries that do the function you are looking for
* By splitting the task into different modules, each module can be worked on concurrently (except for particular circumstances) thus leading to a speedier completion of the overall project
* Code blocks are reusable
* Some problems / functions are very common and possibly occur in multiple different programs (for example the need to make a text box or a clickable button to start a task)
* By resusing blocks of code, the development time is slashed and the project is completed sooner.