Skip to content

JA6. OOP

Statement

The Learning Journal is a tool for self-reflection on the learning process. In addition to completing directed tasks, you should use the Learning Journal to document your activities, record problems you may have encountered and to draft answers for Discussion Forums and Assignments. The Learning Journal should be updated regularly (on a weekly basis), as the learning journals will be assessed by your instructor as part of your Final Grade.

1. Describe what you did, You need to describe what you did and how you did it

This was the 6th week of this course, it was all about object oriented concepts; object oriented programming, classes, objects, inheritance, polymorphism, and encapsulation. I started the week by watching lecture notes videos, then the reading assignment, then tried the self quiz multiple times, revised for the graded quiz, attended the graded quiz; and here I am writing the learning journal.

2. Describe your reactions to what you did

I am nit new to the concepts as they were covered in multiple courses before, but the text explained them from different perspective which was challenging and interesting. I can not say that I understood everything, but I think that I put enough effort this week.

3. Describe any feedback you received or any specific interactions you had. Discuss how they were helpful

I did not receive any interesting feedback that worth mentioning.

4. Describe your feelings and attitudes

I have been working as a software developer for a few years now, I happen to be working in an environment that hates OOP, I inherited a large code base that is OOP-based and I had to convert it to a non-OOP code base which was a mix of functional and procedural programming. I have to say that the project was challenging but also gave me insights about the difference between OOP and non-OOP code bases.

Though, as an effect of the environment; I don’t like OOP that much, but I have to say that it is a very powerful tool that can be used to build large and complex systems; but there is a move in the industry to move away from OOP and use functional programming instead (Suzdalnitskiy, 2021).

5. Describe what you learned

The lecture notes covered Information hiding, implementation, interface, message passing, inheritance, polymorphism, encapsulation, constructors, destructors, abstract classes, and concrete classes. The reading assignment covered the same topics but in more details, along with type conversion, overloading, generics, and dynamic/static polymorphism.

A programming language is said to support OOP if it includes constructs for: Encapsulation and data abstraction, Inheritance, and Dynamic polymorphism (UoPeople, 2023).

6. What surprised me or caused me to wonder?

The concept of generics was intreating, especially static generics that will emit different machine code for each of the possible types that can be used with the generic class or method; while my previous understating comes from generics is scripting language -exactly typescript- which will just emit more type checking and if statements at runt time adding to the overhead. However, generics without cluttering the runtime was a surprise to me (Ben-Ari, 2006).

7. What happened that felt particularly challenging? Why was it challenging to me?

I had a hard time understanding the concept of open recursion, I had to read multiple sources to understand it, and I am still not sure if I understood it correctly. I always took the this keyword for granted, but apparently there is a lot to it; my final understating of the open recursion, which may be wrong that a class is open to changes (inheritance, polymorphism, etc.) after it is defined, and must recursively look for its parents and children through out the class hierarchy to find the correct implementation of a method (MacQueen, 2002).

8. What skills and knowledge do I recognize that I am gaining?

I learned about the the various concepts of object oriented programming; I should be able to create classes and objects with more confident and avoid using complex patterns like polymorphism and inheritance unless it is really needed.

9. What am I realizing about myself as a learner?

I am realizing that I don’t really hate OOP, but rather my environment -as mentioned above- that made me hate it; this course -and similar courses- that give a non-biased view of OOP made me realize that it is a very powerful tool but it also can go very wrong usually due to skill gap.

10. In what ways am I able to apply the ideas and concepts gained to my own experience?

I am able to apply the concepts to my work, I removed the traces of OOP from my codebase, but there are a couple of islands that I kept; I may consider expanding them in the future.

11. Describe one important thing that you are thinking about in relation to the activity

The concepts covered in the chapter are very important to any software engineer to know; wether hate or love OOP, it is a very popular paradigm that is used in many languages and frameworks; and there is a big chance that you will have to deal with it in your career.

References