Fundamental Concepts of Object Oriented Programming

Поділитися
Вставка
  • Опубліковано 23 сер 2024

КОМЕНТАРІ • 574

  • @dariusz.9119
    @dariusz.9119 2 роки тому +700

    "An employee of a business is also a person" - that's a bold statement right there

  • @sheikhebadulkarim2599
    @sheikhebadulkarim2599 2 роки тому +184

    The clearest and simplest explanation of OOP I've ever seen. Many thanks.

  • @MatthewTipton2
    @MatthewTipton2 2 роки тому +240

    Absolutely brilliant. Simple, clear, concise. The whole concept in my mind started as a soft blur and sharpened to crystal clarity.

    • @trevoro.9731
      @trevoro.9731 Рік тому +2

      A lot of BS actually, the author didn't pay attention to correct definitions. But useful to find out common misconceptions.

    • @darianxd5508
      @darianxd5508 9 місяців тому

      why is it BS?@@trevoro.9731

  • @notyournormaldev1419
    @notyournormaldev1419 2 роки тому +129

    The clarity and simplicity is unparalleled.

  • @laurastephenson5169
    @laurastephenson5169 9 місяців тому +43

    I'm a university professor myself, and I have to say that is the most crystal clear, explanation I've ever seen for computer science concepts.

  • @sandrakyoutube
    @sandrakyoutube Рік тому +32

    Remarkable. Remarkable simplicity, clarity, and conciseness. Transformed my vague understanding into clarity without overwhelming me. Thank you!

  • @benediktkraas8576
    @benediktkraas8576 Рік тому +19

    Probably the most useful 10 min of learning OOP so far. I never really understood those 4 principles and now they seem a) sorta easy (both to use and memorize) and b) I was already applying some of them without knowing. Amazing! Thank you kindly

  • @toolittletoolate3917
    @toolittletoolate3917 2 роки тому +23

    OOP was THE hot topic when I was a developer. Took me a little study to understand its foundational concepts. I couldn’t understand why everyone seemed to think that it was THE way to create programs. Sanity eventually prevailed, as it usually does, and it certainly has its place, but if your design does not utilize inheritance and polymorphism, then use another language type. Don’t force a particular model into an OOP design just because your CompSci instructor loved Java.

    • @SnakeEngine
      @SnakeEngine 11 місяців тому

      You can do (real) OOP in C, and do it better than in Java.

  • @hunterjiang5894
    @hunterjiang5894 3 роки тому +53

    This video is the most helpful and concise one I 've ever seen so far among those about the fundamental terms and concepts. Thanks a lot!

  • @achtube85
    @achtube85 3 роки тому +164

    This was a very clear and in-depth explanation. Thank you!

  • @SosetaFurioasaJr
    @SosetaFurioasaJr 2 роки тому +39

    I have finally found a concise, 1 line definition of polymorphism. Thank you very much, big thumbs up.

    • @rubykanima
      @rubykanima 11 місяців тому

      better would be "A subclass can morph / change an inherited method"

  • @BrainConduit123
    @BrainConduit123 Рік тому +4

    I learned OOP from a video that Philippe Kahn made about the subject when Borland’s Turbo Pascal first introduced this new way of programming. It took awhile to understand and master the concepts, but after that, I absolutely loved it and it made large, complicated projects so much more manageable. The ability to start with a base class and do inheritance was extremely powerful. It literally enabled us to program our products in a fraction of the time and with fewer programmers than the old spaghetti code ways of coding.

    • @ComputerScienceLessons
      @ComputerScienceLessons  Рік тому

      I agree. It's a great way to manage large projects. I worked for a number of years in software development (albeit as an educator) and OOP allowed hundreds of developers, in different parts of the world, with a range of skills, to work together effectively on very complex applications. :)KD

  • @marktahu2932
    @marktahu2932 3 роки тому +4

    Wow - sometimes the algorithm really does turn up 'gems'. Many many thanks!! As a visual learner this 'gem' is invaluable.

  • @RVlDER
    @RVlDER 3 роки тому +2

    Finally a concise and clear explanation about these fundamentals.
    The amount of interchangeable terms (that still have different meaning(s) under certain context's) is ridiculous - and near impossible to find a video/documentation that explains them without convolution.

    • @ComputerScienceLessons
      @ComputerScienceLessons  3 роки тому +2

      I'm a great believer in keeping things as simple as possible. Delighted to help. :)KD

  • @jex4400
    @jex4400 Рік тому +3

    This channel is actually phenomenal it needs to be more popular

  • @gianni499
    @gianni499 4 місяці тому +1

    I'm very very impressed. I'm not a strict Java begineer, but I did need to find videos/resources to understand these OOP concepts better. I had watched already 5-10 sources, but yours is just the most clear. Concise, and clear. Very impressive. Thanks!

  • @onyemanwokolo441
    @onyemanwokolo441 7 місяців тому +2

    I keep coming back to this video. The OOP concepts are well explained in simplest and clearest way.

  • @brayanrc4432
    @brayanrc4432 6 місяців тому +2

    The clearest and simplest explanation of OOP. Thanks!

  • @NickHope
    @NickHope 3 роки тому +27

    This is excellent. Very clear and precise. I'm going to re-watch it a couple of times to really drive the concepts home.

  • @alm5966
    @alm5966 2 роки тому +6

    Always good to get a refresher on what OOP is.

  • @salehhassan6057
    @salehhassan6057 2 роки тому +7

    You had a very clear and nice way to describe those concepts. But in my opinion, Polymorphism is much more than just the ability to override a method from a super class. Polymorphism is the ability of an object to take on many forms. Thanks for a great video

    • @ComputerScienceLessons
      @ComputerScienceLessons  2 роки тому +3

      You welcome. Polymorphism catches a lot of people out - so I wanted to keep it very simple for now. One day I will come up with some other examples which make the point that it does indeed literally mean 'many forms' :)KD

    • @doughoffman9463
      @doughoffman9463 10 місяців тому

      Yes. The video leads one to believe that polymorphism is only used in subclasses to override superclass methods. Duck typing (not always available, depends on the language) is the more general and useful case where the same message name can be used in classes that have no common superclass.

  • @reenalupadhayay4315
    @reenalupadhayay4315 Рік тому +2

    Life saving explanation, better than having to sit through a 2 hour video to understand it. Brilliant!

  • @firepower01
    @firepower01 Рік тому +5

    This is such a good channel for understanding computer science concepts, honestly just the best. Thank you!

  • @deei5130
    @deei5130 3 роки тому +6

    This was a very clear and understandable video. Thanks for that man.
    This channel needs more attention

  • @MisterRose90
    @MisterRose90 8 місяців тому

    Wow. Someone who could explain inheritance in an intuitive way. It actually makes a lot of sense.

  • @darianasedkina6340
    @darianasedkina6340 Рік тому +1

    This is a new concept fo me and I've watched about a dozen of videos but should have started with this one. The clarity and simplicity of the explanation are unmatched. Thank you!

  • @opethforlife
    @opethforlife Рік тому +1

    One of the few golden channels on UA-cam.

  • @ultraman6950
    @ultraman6950 3 роки тому +4

    Hats off, sir. Thanks a lot for making this well-documented video about OOP.

  • @MrDuzen12
    @MrDuzen12 3 роки тому +2

    This video needs more views! Great explanation of OOP.

  • @alekseevegor5357
    @alekseevegor5357 10 місяців тому +1

    I have spent several weeks trying to understand the professor till I found this 9 min video. Now I feel like I've been to the moon an back.

    • @lepidoptera9337
      @lepidoptera9337 10 місяців тому

      You haven't been to the moon, yet. If you should ever try OOP in reality you will be disappointed though. It does not do any of the things it promises well. The problem lies in the fact that data dependencies in real world applications have a graph structure (a tree, if you are lucky). OOP is not very good at taking care of that and if you try to use inheritance, in particular, then you will find that you are hard-coding assumptions about that data dependency that may change during the evolution of your project, which will make frequent refactoring necessary. There are better ways of dealing with that problem. Try to learn to think about programs as state machines with as few distinct states as possible. Rather than encapsulating data, control state change. Each state change should be associated with a well defined change of the data. That way your data structures can change freely as the project matures, but the basic flow of the program (as seen by both the user and the programmer) stays the same.

    • @ComputerScienceLessons
      @ComputerScienceLessons  10 місяців тому

      I am delighted to help. You will hear a lot of negativity about OOP but please bear in mind that it aims to facilitate collaboration and scalability. :)KD

    • @lepidoptera9337
      @lepidoptera9337 10 місяців тому

      @@ComputerScienceLessons What are you helping with here by distributing your ignorance about proper software engineering? ;-)

  • @stupidfrog
    @stupidfrog 2 роки тому +9

    Thank you so much, this was very helpful! My professor and textbook did such a poor job of explaining these basics that I felt like I was falling behind.

  • @NorthernStrider
    @NorthernStrider 2 роки тому +1

    If you sped up this video, then you are not worthy of the uploaders precious time. Thank you for the top notch explanation

  • @rehanshoaib1648
    @rehanshoaib1648 4 місяці тому

    The clearest and simplest explanation of OOP I've ever seen. Many thanks. (2)

  • @ivangutowski-smith6514
    @ivangutowski-smith6514 Рік тому +1

    Thank you, I have watched this video about 5 times over the last week, every time... I grasp the concept you are talking about a little more, and then understand another smaller detail you mention.
    I really, really like that whilst explaining, you animate very clear, sensible, logical examples as you go, so I can see what you mean as you are explaining it.
    I still need to watch it many more times fully, but it is clever, logical, makes sense and is super interesting. Thank you for taking all the time to put this together.. your time a few years ago, has helped nearly half a million people... or if like me.. helped 100k people 5x. ha ha

  • @arwahasnain5911
    @arwahasnain5911 16 днів тому

    excellent, could have never understood it so clearly in 9 minutes.

  • @Amy-f3e
    @Amy-f3e 3 місяці тому +1

    Wow this is the best explanation Ive seen!!! I have atechnical interview tomorrow and I only know data and sql and not much about OOP in debt. THANK YOU for this great educational content. Today they always jump to Python or the programming name directly, but I miss the real theory and thinking.

  • @freepboot412
    @freepboot412 Рік тому

    Will add to the pile of positive comments here and say this is the most concise, informative, and accessible video on the subject I've seen. great work

  • @UTRG-UnderTheRain
    @UTRG-UnderTheRain Рік тому +1

    This is one of the best explanations that I have come across as a new learner it's very well explained

  • @patriotir
    @patriotir Рік тому +3

    This was the best explanation I have ever came across! great job and thanks for the video

  • @TheMagicOwL127
    @TheMagicOwL127 3 роки тому +7

    I'm so glad I found this channel, i was just thinking i should get more into programming in my free time. thanks it was super easy to follow!

  • @Matt-iy2cf
    @Matt-iy2cf Рік тому +1

    Wonderfully explained! Have not found a better explanation anywhere online!!!

  • @TonyTigerTonyTiger
    @TonyTigerTonyTiger Рік тому +2

    The part on inheritance has some potential theoretical issues, but it is after all just an introduction. Generally speaking, inheritance should be used to model "is a special kind of" relationship, and should not be used to model as "is a role played by a" relationship. An employee is not a special type of person, it is a role played by a person. Same goes for Customer: that is not a special type of person, it is a role played by a person. For example, Alice could be an Employee of Walmart, but she could also shop there so could also be a Customer of Walmart. So if you are creating an object for Alice, would you create an instance of Employee or Customer?
    On the other hand, a dog "is a special kind of" animal, not a role played by an animal; and a fish "is a special kind of animal", not a role played by an animal. A dog cannot simultaneously be a fish, nor can a dog quit being a dog and become a fish; and a fish cannot simultaneously be a dog, nor can a fish quite being a fish and become a dog. So here inheritance does not suffer from the above problem. If you have a pet dog named Wolfy or Max, there is no ambiguity in what class you would use to create an instance for your pet: it would be a dog.

    • @ComputerScienceLessons
      @ComputerScienceLessons  Рік тому

      I see what you mean. However, the context of the system you are designing is important. If for example I was building a payroll system, and Alice was an employee, it is probably neither here nor there if she is also a customer (staff discounts excepted). :)KD

  • @hadiali5249
    @hadiali5249 2 роки тому +2

    very clear, concise , precise and comprehensive video on OOP.
    thank you for the effort!

  • @igwe6547
    @igwe6547 2 роки тому +1

    Best OOP explanation, simple and straight forward

  • @cd-stephen
    @cd-stephen Рік тому +2

    this has been the best video i have ever seen - great analogies and loved how you included all the different terms used to describe the same thing - new sub

  • @granand
    @granand 2 роки тому +1

    I have seen many as I keep forgetting it but this stands out. Thank you for the creators and the presenter such a clarity and use of just enough visuals. Esp the take away is synonyms which are used, that trips me, After this hopefully not anymore.

  • @zabinoori49
    @zabinoori49 10 місяців тому +1

    The best video explains class and object instance creation in such best way (using graphical representation ).loved that 🤩

  • @AdrianTregoning
    @AdrianTregoning Рік тому +1

    SUCH a good video! Thank you. I wonder why it took me so long to find this channel.

  • @bootcamprag
    @bootcamprag Рік тому +1

    Great breakdown/explanation of the OOP concept. OOP is one of my favorite areas in computer science/programming applications. Its not as an intimidating as it sounds. Next: I would love to see a short video on the application of these four OOP constructs in terms of their application; write a simple program that demonstrates each of the four areas. Thanks.

  • @NormaNsNs
    @NormaNsNs 10 місяців тому +1

    wow I ve been searching for this video the whole day !!! perfectly explained !

  • @Wida85
    @Wida85 Рік тому +2

    Surprisingly clear and succinct, thanks for clearing this up 🤝.
    Please do keep up the good work 🙂.

  • @cherrynoize
    @cherrynoize 6 місяців тому

    It's been said, I know, but you're a really great instructor. Hope (for others) that you do this for a living.

  • @AndrewSinclair
    @AndrewSinclair 8 місяців тому +1

    Thanks.This is the best OO explanation ever.

  • @Zeila1
    @Zeila1 Рік тому +2

    i wish i watched this at the start of my OOP subject, the way you explained it made it so much easier to understand, the examples you used and visual effects really helped also.
    edit: I also remember watching your Dijkstra's Shortest path video back in highschool, that was also amazing.

  • @markyap4755
    @markyap4755 3 роки тому +5

    Thanks so much for a great video !
    Helps us to relate and thus makes learning "enjoyable"
    Learning programming is my current "hobby".
    Thanks again !

    • @ComputerScienceLessons
      @ComputerScienceLessons  3 роки тому

      You are most welcome :)KD If you enjoy programming - have you seen my video on how to make a GeoGuessr type game? :)KD

  • @techwithtee8721
    @techwithtee8721 2 роки тому +1

    Closest thing to understand Database management system

  • @justincatterall9597
    @justincatterall9597 Рік тому +2

    *Now* I understand polymorphism. Thank you!

  • @MichaelChin1994
    @MichaelChin1994 2 роки тому +1

    5:51 "An Employee is *also* a person"
    The way this is said with such a straight face, I thought it was a set up for a joke, like:
    "An Employee is *also* a person, unless they work at a Law-Firm."

  • @alakhdar100
    @alakhdar100 Рік тому

    This is so clean and simple, yet informative, thank you so much, please keep uploading!

  • @altair6616
    @altair6616 3 роки тому +6

    ur videos r so simple and informative man

  • @michaelcappello2254
    @michaelcappello2254 2 роки тому +1

    Very clear explanation of the basics of OOP. Thank you.

  • @getTheSchmack
    @getTheSchmack Рік тому

    Big W. You sir, are brilliant. Just look at how many people are heaping praise and all well-deserved. Thank you!

  • @taniatech_official
    @taniatech_official 6 місяців тому +1

    Simple and straight forward. Thanks a lot!

  • @bryanpepe2395
    @bryanpepe2395 Рік тому +2

    Amazing explanation. Good job!

  • @nevillecreativitymentor
    @nevillecreativitymentor Рік тому +1

    I picked a book on OOP 25 odd years back ... TODAY i understood the fundamentals LOL LOL ... thanks for the video ♥♥

  • @christianihechi
    @christianihechi 3 місяці тому +1

    As clear as crystal. Thank you!

  • @cbbcbb6803
    @cbbcbb6803 5 місяців тому

    Great job!
    Thanks for saying what a class is really. The word template was close to meaningless to me. But saying that a class is "code written by a programmer" is far more precise and meaningful to me.

  • @djpe4ka
    @djpe4ka 2 роки тому +2

    Definitely th best explanation ever. Subscribed.

  • @tuck295q
    @tuck295q Рік тому +1

    This video is mad with super clear and simplistic yet uber effective explaination. xD

  • @michellemwangi3963
    @michellemwangi3963 3 роки тому +4

    The entire series is really really good! very well explained. Thanks a lot

  • @kopilkaiser8991
    @kopilkaiser8991 2 роки тому +1

    Thank you for your explaination. I've learnt quite a lot from watching your video. Keep up the good work in teaching beginners like me.

  • @MrFroggster
    @MrFroggster Рік тому

    Probably the best and easiest explanation. Thank you.

  • @xx03_p19
    @xx03_p19 2 роки тому +1

    Many experienced programmers even the very good ones can't really explain Polymorphism clearly! Thanks :)

    • @ComputerScienceLessons
      @ComputerScienceLessons  2 роки тому

      You are very welcome :)KD

    • @MiningForPies
      @MiningForPies Рік тому

      I once was doing telephone interviews for senior developer positions at SAGE (the accounting software company).
      I asked the candidate if he could give me an explanation of what polymorphism was and an example of where he’d used it.
      He accused me of making the term up 🤔. “What the bloody hell is that” or words to that effect.
      He didn’t get invited to a face to face interview.

  • @densmac
    @densmac 11 місяців тому

    10/10 in explaining OOP concepts.

  • @maycodes
    @maycodes 2 роки тому +1

    What an amazing crystal clear explanation, got confused in university

  • @irwainnornossa4605
    @irwainnornossa4605 Рік тому +1

    Damn, this was awesome! Like…I know these concepts, but now…I somehow know them better.

  • @bdrq
    @bdrq Рік тому +1

    Oh god, now I get polymorphism... Thank for the explanation 👍

  • @shreyashkumarthakur383
    @shreyashkumarthakur383 Рік тому

    Best video I have seen till now. Attained full conceptual clarity

  • @masterrov1030
    @masterrov1030 9 місяців тому +1

    Thank you for teaching these basic pillars of OOP

  • @manishmalhan9768
    @manishmalhan9768 11 місяців тому

    Such Brevity and Clarity !!

  • @andregrobler4393
    @andregrobler4393 2 роки тому +1

    Very concise and accurate. Most helpful, thanks.

  • @CenturionVII
    @CenturionVII 3 роки тому +2

    Really upping the animation quality, very nice sir!

    • @ComputerScienceLessons
      @ComputerScienceLessons  3 роки тому +1

      Thanks for noticing. I was playing around with a very old version of Adobe Flash :)KD

  • @itorres008
    @itorres008 Рік тому

    Amazingly succinct, clear and thorough!

  • @emmamorris1092
    @emmamorris1092 2 роки тому +1

    massively useful definitions of OOP terminology - thanks!

  • @showaibhaydar9590
    @showaibhaydar9590 Рік тому +1

    This is a super clear way of defining and demonstrating the concepts ! infinite Thanks ❤‍🔥

  • @velocitydelta
    @velocitydelta 3 роки тому +1

    This is a great video! My teacher shared it with us to revise the concepts we are learning currently in school!

  • @EdeYOlorDSZs
    @EdeYOlorDSZs Рік тому +1

    Top tier explination, relevant terminology is incoporated adequately

  • @lucasbozdog5922
    @lucasbozdog5922 3 місяці тому

    this is one of the best explanations i have seen thank you

  • @opst1704
    @opst1704 Рік тому +1

    Hmm... now terms encapsulation and API seem to be the same or at least very similar.. would you agree?
    Encapsulation is usually used when we talk about OOP, and API is usually used more broadly - not explicitly connected with OOP.
    You also mentioned data hiding, another term that is usually mixed with encapsulation.
    All I'm saying is that there are very similar terms that are connected with each other.
    Anyway, beautiful video. One of the greatest channels. Thanks for creating this content for free!

    • @ComputerScienceLessons
      @ComputerScienceLessons  Рік тому

      Thank you, and you are most welcome. I can see where you're coming from. An API is a way that a programmer can utilise the code someone else has written without being able to see 'under the bonnet'. In that sense, the API code is encapsulated. The most used definition of encapsulation is "the hiding of data and complexity", but it is also a way that an organisation can protect their intellectual property, that is, their source code. Many people confuse encapsulation with abstraction. Abstraction is to "ignore detail". If you are a studying for an exam and might get asked questions about OOP, then the definitions are important.

    • @lepidoptera9337
      @lepidoptera9337 Рік тому

      @@ComputerScienceLessons OOP provides abstraction, all right, but it provides the wrong abstraction for the overwhelming majority of problems because the "functions act mostly on data inside their own class" assumption is usually not even remotely correct. As soon as there are strong dependencies between data elements in different classes (and there almost always are), OOP becomes an unsolvable puzzle.

  • @marcuss8454
    @marcuss8454 3 роки тому +1

    And just like that, I subscribed to this channel for such a great explanation.

  • @brandonwilcox3307
    @brandonwilcox3307 Рік тому

    Clear, concise, and informative. Thanks!

  • @fuz3266
    @fuz3266 Місяць тому

    Clear and to the point, thank you!

  • @TexasEngineer
    @TexasEngineer Рік тому

    Thank you for your brilliant explaination. I now know why OOP does not work for my type of programming. I deal with mathematical processes and not objects. Data goes in, formulas are applied, results come out, results are stored or presented. OOP fits database problems. My programming fit the chsos of a spreadsheet.

  • @jackmiller2518
    @jackmiller2518 2 роки тому +1

    that was bloody fanatic mate cheers for that

  • @dr.SaurabhSingh
    @dr.SaurabhSingh Рік тому

    The clarity at its peak. 👌

  • @RPGAuthority
    @RPGAuthority 2 роки тому +2

    took me 6 seconds to decide i love this video thanks for this subbed and commenting for the algorithm

  • @ujjwalsingh8975
    @ujjwalsingh8975 2 роки тому +1

    had so many doubts after my OOP class this cleared it all

  • @AGriffith
    @AGriffith 2 роки тому +1

    Loved the video and how you emphasize different key words, keep the great work!

  • @ongwu1507
    @ongwu1507 Рік тому +1

    so clear, and easy to understand, thanks
    great job

  • @TreyHope
    @TreyHope Рік тому +1

    Very solid explanation, perfect breakdown. Thank you for sharing.