Start learning with our library of video tutorials taught by experts. Get started
Viewers: in countries Watching now:
Most modern programming languages, such as Java, C#, Ruby, and Python, are object-oriented languages, which help group individual bits of code into a complex and coherent application. However, object-orientation itself is not a language; it's simply a set of ideas and concepts.
Let Simon Allardice introduce you to the terms—words like abstraction, inheritance, polymorphism, subclass—and guide you through defining your requirements and identifying use cases for your program. The course also covers creating conceptual models of your program with design patterns, class and sequence diagrams, and unified modeling language (UML) tools, and then shows how to convert the diagrams into code.
In this class, we have been focused on general object-oriented design techniques, patterns, and practices. It is worth talking a little but more about language differences. Now as far as I was able, I made this course as generic as possible, and we've explored a few examples in different languages--a few more using Java as it's a common well-known language with typical implementation of these concepts. But when you're comparing languages, what you will you find as one of the biggest differences is does the language support multiple inheritance. C++ does, Ruby does using a feature called Mixins, but most languages on this list allow and enforce only single class inheritance.
Most of these languages are statically typed, meaning all variables are declared with a specific type as opposed to languages like Ruby, which is dynamic. And there are always arguments about which one is better. It tends to be an argument that involves flexibility of a dynamic language versus the compile time error checking of a static language, but it doesn't really affect the material we've explored here that much. Although, as I've mentioned, dynamic languages don't enforce the formality of things like interfaces simply because the point of a dynamic language is to avoid all the explicit checking of what an object will and will not respond to and leave that to runtime.
The concepts we've explored here work across many, many languages, not just the one shown here, and I will leave it to you to explore the specifics of implementation in your chosen language.
There are currently no FAQs about Foundations of Programming: Object-Oriented Design.
Access exercise files from a button right under the course name.
Search within course videos and transcripts, and jump right to the results.
Remove icons showing you already watched videos if you want to start over.
Make the video wide, narrow, full-screen, or pop the player out of the page into its own window.
Click on text in the transcript to jump to that spot in the video. As the video plays, the relevant spot in the transcript will be highlighted.