Module 1: Object-Oriented Programming basics using Ruby

Hansen Henok Oktavianus Situmorang — GBE01072

1. How do you feel about this week’s learning?

This week, I learned so many things. Start from learning communication skills using English with CAKAP, and learn basic concepts of Object-Oriented Programming using Ruby. In English class, we were divided into 29 groups, I’m in group 25, and we have a class every Tuesday and Thursday. For the technical class, we are divided into two groups, the BANGSA group (my group) and the BISA group, we have a class every Monday, Wednesday, and Friday (using English). I’m so happy and can’t hold myself in excitement to learn the next module

2. What’s the most important thing you learned today? Why do you think so?

I learned four main pillars of Object-Oriented Programming which are software design principles to help me write clean Object-Oriented Programming code. The four pillars are:

  1. Abstraction: Abstraction is a way to hide important features or information of an entity. For example, the button to turn on the GPS on a Smartphone, we don’t need to know exactly what the button does, but we know that the button is for activating/disabling GPS
  2. Encapsulation: Encapsulation is a way to wrap data and behaviors into one, for example, Class. By creating an access modifier for data or behaviors (Public, Protected, Private), we already implemented encapsulation by making it hidden or exposed.
  3. Inheritance: Inheritance is allowing particular attributes and behaviors from one class to another. Inheritance is very useful when an object requires certain methods or attributes.
  4. Polymorphism: In Greek, Polymorphism is derived from 2 words, Poly (many) and Morph (form). Polymorphism, which means many forms, is a way of sub-class determine certain behaviors that are inherited from the super-class into different behaviors.

I’ve also learned three types of relationships between classes, there are Association, composition, and aggregation.

3. What are the things you’re still confused about? What would you do to help your understanding?

Design Patterns and Refactoring. Even though they are not taught directly, but these two things are very important in the future. To help myself understand Design Patterns and Refactoring, I’ll start by reading them, link them to real-life examples, and try to implement them from fundamentals to advance
I’ve also found two websites that contain information about Design Patterns and Refactoring, such as Refactoring Guru dan Source Making

--

--