DEV Community

loading...
Cover image for JS interview in 2 minutes / Object-Oriented Programming (OOP)

JS interview in 2 minutes / Object-Oriented Programming (OOP)

Nikita Kozlov
Make things happen ✨ Webdev / websec / management / drawing
・2 min read

Question:
What is object-oriented programming (OOP)?

Quick answer:
It is an agreement describing how you can write programs, grouping state, and related operations in one place.

There are classes - a boilerplate for objects, objects - actual containers for the data, methods - operators over data in these objects.

// Btw, it may be useful to know the other paradigms, more info on the wiki.

Longer answer:
Let's start from some simple problem which we will try to solve using OOP.

Imagine we are building new Facebook, but for the dogs. Awesome startup idea!

Ok, so we are dealing with dog profiles, what data is there?

{
  name: 'Doggert',
  age: 2,
  isGood: true,
},
...
Enter fullscreen mode Exit fullscreen mode

We need some way to create profiles like this in a blink of an eye and do some common things like barking.

At this point, OOP kicks in. Let's create a boilerplate code that will help us easily create objects like the previous one.

class DogProfile {
  constructor(name, age) {
    this.name = name
    this.age = age
    this.isGood = true
  }
}

const doggert = new DogProfile('Doggert', 2)
Enter fullscreen mode Exit fullscreen mode

Now we need to figure out how to bark, as it is required for every mannered dog.

class DogProfile {
  // ...
  bark() {
    alert('Bark!')
  }

  barkInEnglish() {
    alert(`Hello my friend! My name is ${this.name}.`)
  }

  changeName(name) {
    this.name = name
  }

  old() {
    this.age++;
  }
}

// ...
doggert.barkInEnglish()
doggert.changeName('Doggert the Great')
doggert.barkInEnglish()
Enter fullscreen mode Exit fullscreen mode

Finally, we have a class, which helps us create new data, objects which store data, and methods that help us to work with the data.

Real-life applications:

There are not only 🦄 and 🌈. In real-life applications, you should consider few caveats using this approach.

For example, you should consider how do you extend or refactor existing classes. Imagine you need to add CatProfile, it is the same as DogProfile, but still different. How do you handle situations like this?

At another moment you need to add admin profiles and admin permissions. How do you handle it? Will you need to update all classes?

There is another funny sound issue banana, monkey, jungle problem. It is when you need to create a banana, but you need a monkey to hold it, but the monkey only lives in a forest.

So there are a lot of possible issues which you need to be aware of in advance. With great power comes great responsibility as you may have heard 🕷

p.s.: I'm not trying to be 100% accurate on every definition, but just trying to describe it in simple words. Sorry in advance 🙏

Resources:
wiki/OOP
wiki/programming_paradigm

Other posts:


Btw, I will post more fun stuff here and on Twitter. Let's be friends 👋

Discussion (3)

Collapse
anurajdwivedi profile image
Anuraj Dwivedi 👨‍💻

Explain everything in just few words.

Amazing 👏👏

Collapse
feezyhendrix profile image
Abdulhafeez Abdulraheem

This is awesome!

Collapse
kozlovzxc profile image
Nikita Kozlov Author

Thanks! Glad you like it ✨