* inheritence? means that classes can extend other classes. This means that if you have many kinds of things in your program that share some behavior (e.g. SortableStuff?) you can extract out the common functionality into a common parent class so that you can write and debug the functionality once and reuse it easily elsewhere. There are a variety of interitence mechanisms, such as [single inheritance]?, multiple inheritance and interfaces?. |
* inheritance? means that classes can extend other classes. This means that if you have many kinds of things in your program that share some behavior (e.g. SortableStuff?) you can extract out the common functionality into a common parent class so that you can write and debug the functionality once and reuse it easily elsewhere. There are a variety of interitence mechanisms, such as [single inheritance]?, multiple inheritance and interfaces?. |
* [integrated development environment]?, or IDE, is an idea from the OOP world that has been widely adopted across nearly all languages. The idea is that the tools should understand the language and what the programmer is doing, and present structured tools, rather than simply being a text editor. For example, a good IDE will allow you to browse the classes that you have written, and easily work with the methods for a given class, or see what code calls a given method. |
* Integrated Development Environment, or IDE, is an idea from the OOP world that has been widely adopted across nearly all languages. The idea is that the tools should understand the language and what the programmer is doing, and present structured tools, rather than simply being a text editor. For example, a good IDE will allow you to browse the classes that you have written, and easily work with the methods for a given class, or see what code calls a given method. |
* [iterative development]? means that instead of managing a software system as one, huge system, spending months getting the specifications just right, and then throwing a team at if for six months, then shipping the result to QA, you can apply decomposition? to manage the project as a series of small, more tractable projects. You can define a small part of the overall problem to solve, implement it rapidly, and test it, so that you can then iteratively expand the system. |
* [Iterative development]? means that instead of managing a software system as one, huge system, spending months getting the specifications just right, and then throwing a team at if for six months, then shipping the result to QA, you can apply decomposition? to manage the project as a series of small, more tractable projects. You can define a small part of the overall problem to solve, implement it rapidly, and test it, so that you can then iteratively expand the system. |
Some computer languages are inherently Object Oriented, such as Smalltalk, Java and Python, while others are a hybrid of OOP and otherwise, such as Perl and C++.
OOP could be defined in terms of what it isn't, which is procedural programming.
Object Orientation is typically considered to consist of the following properties:
Of course, those descriptions make a lot of assumptions that should be elaborated, which is why people write books about OOP. For example, the underlying goals of OOP are to increase software reliability and maintainability, and to make large software projects more manageable.
Also, OOP approaches to development tend to emphasise the complete development and runtime environment, not just the syntax of the language. Most OO languages are associated with:
Of course, some or all of the above can be applied without necessarily using OOP, or an OOP language. I have seem good IDE's for coding straight C, and iterative development, without any OOP aspects all, for example.