Hotspots: Admin Pages | Turn-in Site |
Current Links: Cases Final Project Summer 2007
Discussion 1 - Josh Holt
The article I read came from wikipedia, the link is http://en.wikipedia.org/wiki/Object-oriented_programming. Sub-articles include the section on Class-Based OOP and Prototype-based programming
The article discusses many forms of Object-Oriented Programming. One such form is OOP in Procedural Programming languages. A data type in a procedural programming language is extended to behave like an object, acting in many ways like an abstract data type would in a more "pure" Object-Oriented Language. The article goes on to discuss static typing for Object-Oriented Programming, or Class-Based OOP, in which encapsulation (hiding the details of implementation, programming to an interface) and inheritance. Inheritance in this model is accomplished by making classes, and "defining classes as extensions of other classes". Yet another type of OOP is called Prototype-based programming, in this style classes do not exist. Inheritance is accomplished by using existing objects as prototypes for new objects and reusing their behavior.
Prototype-based programmers suggest that standard, class-based OOP is too rigid and static, and that during development specifications almost always change. Proponents of class-based OOP believe that "correctness, safety, efficiency, and predictability" are more important goals than the flexibility of being able to edit code at runtime, as prototype-based programming allows.
Personally, I can see why so many languages exist. On the one end of the spectrum, as computer scientists we are told not to reinvent the wheel and to reuse the progress of others (mind you, freely released, not stealing :)) so that we are more efficient in whatever project we are tasked with. As time went on however, existing programming languages weren't tuned the specification of the project, in which new ones were created. Generally speaking a good group of programmers will design their project with the Object-Oriented model and then choose the best tool (programming language) to implement their design and their goals. Whether that goal is efficiency or flexibility, speed at runtime or speed in the development process is up to the programmer.
I responded to Discussion 1 - Chris Ronderos. I tend to agree with his assessment of the article. While I did not take AP programming in high school (they didn't offer programming classes in college), my first programming class in college was C++. It was split into two classes. In the first part, we learned nothing but "enhanced C" structured programming. In the second class we learned classes in C, however we were mainly using them as abstract data types, such as the dictionary class, or linked lists, but our entire design of the program was still based around a procedural process. I left the class believing I knew Object-Oriented programming when in reality I knew nothing about the design process.
Link to this Page