Challenge: Learn Object Oriented Programming in Practice

Overview

Challenge: Learn Object Oriented Programming in Practice

The main objective is to put into practice one of the main tools of OO: ABSTRACTION, ENCAPSULATION, INHERITANCE AND POLYMORPHISM, through a Java project.

  1. Let's ABSTRACT the Bootcamp DOMAIN and MODEL its ATTRIBUTES AND METHODS
  2. We will create the CLASSES: Bootcamp, Courses, Mentorships and Devs and we will list them
  3. The Course, Mentorship and Devs CLASSES will also be MODELED, that is, we will create their ATTRIBUTES AND METHODS
  4. To make the code more readable and easier to maintain, we will use some of the tools that the OBJECT ORIENTATION PARADIGM (OOP) offers us: ABSTRACTION, ENCAPSULATION, INHERITANCE AND POLYMORPHISM
  5. And to represent CLASSES that were created and related, we will transform them into OBJECTS

Object Oriented Programming Paradigm (OOP)

The Object Oriented (OO) view is that of a world of interacting objects. This paradigm is an analysis, design and programming model based on the approximation between the real world and the virtual world, through the creation and interaction between classes, attributes, methods, objects, among others.

There are 4 main pillars of OOP: ABSTRACTION, ENCAPSULATION, INHERITANCE AND POLYMORPHISM.

ABSTRACTION:

Ability to focus on essential aspects of a domain, ignoring less important or accidental features. In this context, objects are abstractions of existing entities in the domain in question.

ENCAPSULATION:

Encapsulating means hiding the implementation of objects. Encapsulation mainly favors two aspects of a system: maintenance and evolution.

HERITAGE

Allows you to define a child class that reuses (inherits), extends, or modifies the behavior of a parent class. The class whose members are inherited is called the base class. The class that inherits the members of the base class is called a derived class.

POLYMORPHISM:

Ability of an object to be referenced in various ways. Be careful, polymorphism does not mean that the object keeps changing, on the contrary, an object is born of a type and dies of that type, what can change is the way we refer to it. The ability to treat objects created from specific classes as objects of a generic class is called polymorphism.

FUNDAMENTAL CONCEPTS POO

DOMAIN:

Application domain, also known as business or business objects layer, is where the classes that are part of the problem domain are located, that is, classes corresponding to objects that are part of the problem description.

CLASS:

An element of code that has the function of representing objects in the real world. Within it, it is common to declare attributes and methods, which represent, respectively, the characteristics and behaviors of this object.

ATTRIBUTE:

Attributes are basically the data structure that will represent the class. Attributes are also known as CLASS VARIABLE, and can be divided into two basic types: instance and class attributes.

VARIABLE:

A “previously identified memory region (of the computer) whose purpose is to store the data or information of a program for a certain period of time”.

METHOD:

Methods represent the states and actions of objects and classes.

OBJECT:

In OOP, an object is a "mold" of a particular class, which comes into existence from an instance of the class. The class defines the behavior of the object, using attributes (properties) and methods (actions). Object in computer science, is a reference to a memory location that has a value. An object can be a variable, function, or data structure.

INSTANCE:

An instance of a class is a new object created from that class, with the new operator. To instantiate a class is to create a new object of the same type as that class. A class can only be used after being instantiated.

Programming Language vs Programming Language Paradigm

PROGRAMMING LANGUAGE:

It is a formal language that, through a series of instructions, allows a programmer to write a set of orders, consecutive actions, data and algorithms to create programs that control the physical and logical behavior of a machine. Here are some examples of how programming languages ​​can be classified:

Abstraction level:

Low Level: Assembly Medium Level: C, C++, D, Objective C, etc. High Level: Java, C#, PHP, Javascript, etc. Highest Level: Python, Ruby, Elixir, etc.

Programming paradigm:

Structured Programming: C, Pascal, Ada, etc. Object Oriented Programming: Java, C#, C++, Objective C, D, etc. Functional Programming: Lisp, Scheme, Erlang, Elixir, etc.

Languages ​​classified by application architecture:

Desktop: C, C++, Object Pascal, Java, etc. Web: PHP, Ruby, Javascript, Java, etc.

Type of execution:

Compiled languages: C, C++, Pascal, D, GO, etc. Interpreted Languages: Python, Ruby, PHP, Javascript, etc. Hybrid Languages: Java, Erlang, Elixir, etc.

PROGRAMMING LANGUAGE PARADIGM

It is a set of characteristics that can be used to categorize a given group of languages. A paradigm may offer appropriate techniques for a specific application.

MAIN PARADIGMS and THEIR SUBPARADIGMS

Imperative Paradigm

In this paradigm, the program describes the processing required to solve the problem. Thus, the imperative paradigm is characterized by sequential execution of instructions, by the use of variables that represent memory locations and by the use of assignment instructions that change the values ​​of these variables. Let's look at some Imperative Paradigm Subparadigms and examples of programming languages ​​that adopt these subparadigms.

1.1 Structured Paradigm: ALGOL 58 and ALGOL 60

1.2 Concurrent Paradigm: Java and Ada

1.3 Object Oriented Paradigm: Smalltalk and Java

2. Declarative Paradigm

This paradigm is the model in which the results are described, but the steps to arrive at the results are not established. Let's look at some Declarative Paradigm Subparadigms and examples of programming languages ​that adopt these subparadigms:

2.1 Functional Paradigm: Lisp and Haskell

2.2 Logical Paradigm: Prolog

You might also like...

This repository is an example of one of my biggest object-oriented projects

COO - Project This repository belongs to Lounès Meddahi. This project was realized in collaboration with Matthieu Medeng Essia Computer Science and Ma

Sep 11, 2022

OBJECT ORIENTED PROGRAMING IN JAVA Coursera SPECIALIZATION by DUKE UNIVERSITY & UNIVERSITY OF CALIFORNIA, SAN DIEGO

COURSERA Object Oriented Programming in Java Object Oriented Programming in Java - by Duke University & University of California, San Diego Java Prog

Dec 29, 2022

Repository for FIRST Tech Challenge team 3916 Apex Robotics for the 2021-2022 game year (Freight Frenzy)

FTC Team 3916 - Apex Robotics This is our repo for the 2020-2021 game year - Ultimate Goal Installation Clone this repo. You can do this through the w

Nov 4, 2021

This is a Bukkit-Event based AntiCheat created cause of a challenge.

XAC - XAntiCheat This is a Bukkit-Event based AntiCheat made out of a challenge with a friend of mine. Its not recommandable to use and also a bit exp

Apr 6, 2022

30 Days Coding Challenge with Arsh Goyal.

#ReviseWithArsh #6Companies30Days #ArshGoyal #ReviseWithArsh #6Companies30Days Challenge! Offical Doc:- Explore the docs » Offical Video:- Explore the

Jan 3, 2023

6-Companies-in-30-Days - A challenge 💪 by Arsh Goyal

6-Companies-in-30-Days - A challenge 💪 by Arsh Goyal 1st Company - Goldman Sachs Q.1 Print Anagrams Together -- Solution Q.2 Overlapping rectangles

Jan 6, 2022

Desafio Alura Challenge para backend. Criando uma API REST de controle de orçamento utilizando JAVA.

Desafio Alura Challenge para backend. Criando uma API REST de controle de orçamento utilizando JAVA.

Jun 16, 2022

McHacks9 RailVision Challenge

McHacks9 RailVision Challenge

McHacks9 RailVision Challenge Hi! Welcome to our project page. Here we give a brief summary of the heuristics we used and programs we built to create

Jan 23, 2022

Robot code for FRC 2020 challenge

frc-code Robot code for FRC 2020 challenge STUFF I FOUND ABOUT THE GYROSCOPE also we all need to read the docs from last year. this Ian guy is our god

Jan 22, 2022
Owner
njtsb1
https://www.linkedin.com/in/nivaldobeirao/
njtsb1
A sideproject to learn more about object-oriented programming, design patterns and Java meanwhile studying an OOP-course.

MyBank Description A console application that simulates a bank with very simple functions. Potential story could be an employee using this application

null 2 Mar 23, 2022
Object Oriented Programming Course - Fall Semester 2021

Object Oriented Programming Course (Fall Semester 2021) This repository will store the code we use during the lectures and the exercises sessions of t

Andres R. Masegosa 14 Jul 10, 2022
PGR112 Object-oriented Programming

Welcome to PGR112! Object-oriented Programming Course Page Canvas page This repository is for students at Campus Bergen taking the course PGR112 this

Høyskolen Kristiania PGR112 Bergen 18 Sep 20, 2022
Three Java projects assigned for the Introduction to Object-Oriented Programming (CMPE 160) course in the Spring 2021 semester.

CMPE160-projects Three Java projects assigned for the Introduction to Object-Oriented Programming (CMPE 160) course in the Spring 2021 semester. These

Aras Güngöre 21 Dec 6, 2022
For Jack language. Most of codes were commented with their usage, which can be useful for beginner to realize the running principle of a compiler for object-oriented programming language.

Instructions: Download the Java source codes Store these codes into a local folder and open this folder Click the right key of mouse and click ‘Open i

gooooooood 1.1k Jan 5, 2023
Learning and improving skills in Object Oriented Programming, with concepts from the Spotify App

sPOOtify Screenshot EN A project developed in the discipline of Object Oriented Programming, to apply and improve the concepts of Object Orientation.

Eduardo Henrique 7 Jan 2, 2023
Object-oriented Java tuples

Object oriented Java tuples. No data accessors No ugly class or method names pair._1() , new Tuple3() All tuple types are interfaces Strong encapsulat

Kirill 17 Feb 7, 2022
Design Patterns: Elements of Reusable Object-Oriented Software

GoF Design Patterns Design Patterns: Elements of Reusable Object-Oriented Software Task 싱글톤패턴 싱글톤 패턴 구현 방법을 깨뜨리는 방법 리플렉션을 통해 싱글톤 패턴을 깨뜨리다 역직렬화를 통해 싱글톤

전지환 11 Jul 19, 2022
An object-oriented implementation of the game Concentration

Concentration An object-oriented implementation of the game Concentration Rules Any deck of playing cards may be used, although there are also commerc

michael 0 Dec 6, 2022
Object-Oriented and Immutable Java Chain of XSL Transformations

It's a chain of XSL transformations in Java. You add this to your pom.xml: <dependency> <groupId>com.yegor256</groupId> <artifactId>xsline</artifa

Yegor Bugayenko 12 Dec 15, 2022