# Object Oriented Programming

## Overview

This course gives an in-depth understanding of Object-Oriented programming using the Java programming language, Object Oriented Design, and Design Patterns. The main concepts discussed include [`Objects`](https://bit.ly/2xRL8Lx), `Data Abstraction`, [`Data Encapsulation`](https://en.wikipedia.org/wiki/Object-oriented_programming#Encapsulation), [`Polymorphism`](https://en.wikipedia.org/wiki/Object-oriented_programming#Polymorphism), and [`Inheritance`](https://bit.ly/1IR9T9j). The course also offers proficient lab tutorials and experiments in order for the students to master the art of writing object oriented code.

## Navigation

* [Prerequisites](#prerequisites)
* [Textbooks](#textbooks)
* [Code](#code)
* [Videos](#videos)
* [Websites](#websites)
* [Articles](#articles)
* [Apps](#apps)

## Prerequisites

This course has the following prerequisites:

* [Computer Programming](https://bpdc-acm.gitbook.io/openlib-cs/courses/csf111)

## Textbooks

| Title                                                                                                                   | Author(s)          |   Edition  |
| ----------------------------------------------------------------------------------------------------------------------- | ------------------ | :--------: |
| [Object Oriented Design & Patterns](https://drive.google.com/file/d/1WkjRyU7aGcr01MpJ-iQCTeXhFLUHeH7T/view?usp=sharing) | Cay Horstmann      | 2nd (2006) |
| [Java The Complete Reference](https://drive.google.com/file/d/1FWUTT4x8BI-v0_SIf50HHNvyKdPw1gYq/view?usp=sharing)       | Herbert Schildt    | 9th (2014) |
| [C++: An Object Oriented Approach](https://drive.google.com/file/d/1FWUTT4x8BI-v0_SIf50HHNvyKdPw1gYq/view?usp=sharing)  | Forouzan & Gilberg |   (2019)   |

## Code

* [object-oriented-programming-lab, *DBAD*](https://github.com/dontbeadouche/object-oriented-programming-lab)

## Videos

* [Java Tutorial for Beginners, *ProgrammingKnowledge*](https://www.youtube.com/playlist?list=PLS1QulWo1RIbfTjQvTdj8Y6yyq4R7g-Al)
* [Java Video Tutorial, *Derek Banas*](https://www.youtube.com/playlist?list=PLE7E8B7F4856C9B19)
* [Java Tutorial, *Derek Banas*](https://www.youtube.com/watch?v=n-xAqcBCws4)
* [Java (Beginner) Programming Tutorial, *thenewboston*](https://www.youtube.com/playlist?list=PLFE2CE09D83EE3E28)

## Websites

* [Java Programming Language, *GeeksforGeeks*](https://www.geeksforgeeks.org/java/)
* [Java Tutorial, *Javatpoint*](https://www.javatpoint.com/java-tutorial)
* [Object Oriented Programming in Java, *Coursera*](https://www.coursera.org/learn/object-oriented-java)

## Articles

* [Java Programming Cheatsheet](https://drive.google.com/file/d/1FUOgQrPB_sUsPSGrj8LOuMRIELRx0LD3/view?usp=sharing)

## Apps

* [Java, *SoloLearn*](https://www.sololearn.com/Course/Java/)
