Talk:Object-oriented programming

From Wikipedia, the free encyclopedia

This article is within the scope of Computing WikiProject, an attempt to build a comprehensive and detailed guide to computers and computing. If you would like to participate, you can edit the article attached to this page, or visit the project page, where you can join the project and/or contribute to the discussion.
??? This article has not yet received a rating on the quality scale.
??? This article has not yet received an rating on the importance scale.
This article is within the scope of WikiProject Computer science, which aims to create a comprehensive computer science reference for Wikipedia. Visit the project page for more information and to join in on related discussions.
B rated as B-Class on the assessment scale
High rated as High-importance on the assessment scale


Contents

[edit] need to add an example of multiple inheritance

In the bulleted paragraph describing multiple inheritance, the statement "When an object or class inherits its traits from more than one ancestor class, it's called multiple inheritance." seems to say that 'Lassie is a Collie, a Collie is a Dog' is an example of multiple inheritance, when it is not. An example of multiple inheritance could be added, perhaps where a Collie and a Chihuahua breed; the offspring would inherit from both the Collie and the Chihuahua classes. This example would illustrate the complexities of multiple inheritance, because the offspring would be able to tremble(), but confusion arises as to which bark() to use, either the high-pitched Chihuahua.bark() or the default Dog.bark(). Spemble 16:08, 3 January 2007 (UTC)

I think the Chimaera example is quite clear: a Chimaera isa cat anda dog. For another example:
  • aircraftCarrier isa ship.
  • ship isa vehicle.
  • twoWheeler isa vehicle
and
  • nuclearReactor isa primeMover
  • pedal isa primeMover
then you can have a couple of new classes using multiple inheritance:
  • nuclearAircraftCarrier isa nuclearReactor-powered-ship
  • bicycle isa pedal-driven-twoWheeler

(These are not good examples of multiple inheritance. A bicycle is not a kind of pedal. Bicycle would be better modelled as having an attribute driven-by (perhaps inherited from Vehicle) which would have an object of class Pedal as its value. The NuclearAircraftCarrier is slightly better, but here again I would say that the the NuclearReactor is a component of rather than a superclass of a NuclearAircraftCarrier.

I suggest that a better example is HouseBoat which would naturally inherit from both House and Boat.) —Preceding unsigned comment added by 195.137.21.118 (talk) 08:19, 18 October 2007 (UTC)

There are also some more classes you can have, but knowledge tells you that they cannot exist, such as a pedal-driven-aircraftCarrier and a nuclearReactor-powered-twoWheeler, though probably both might be fun... Dpser 16:44, 26 January 2007 (UTC)

[edit] Criticism Section Removal

These references are of no use what-so-ever. There is no real programmer that deputes the value of object oriented programming. I outline my individual reasons for each of the points below, and why they do not apply.

IMHO we must add the "advantages" section, instead of "criticism" section removal.

Do you think that article became more neutral, after criticism section elimination? We can discuss the improvements of criticism section, but it must be present. Otherwise article will lose neutrality.


Please discuss/remove the sections if you agree...

A study by Potok et al. [1] has shown no significant difference in productivity between OOP and procedural approaches.

  • 1. Potok is not a programmer, he is a "computer science researcher".
    • I think, this is not reason in order to ignore his opinion.
  • 2. This article is misleading. First off, much of the evidence for this was done on programs 5000-25000 lines long. I work for a software company with a single executable that is well over 250,000 lines long. At this level, it is very very very useful. Second, all this article says is 'our results indicate that in a commercial environment there may not be a consistent statistically significant difference in the productivity of object-oriented and procedural software development'.
    • I also worked in the software company. I consider that team is important, project management is important, requirements is important and architecture is important. Not OOP or any such technology.
  • 3. What does "productivity" mean?
    • Hmm... implemented features per time unit?
  • 4. '...may not be significant..'? This isn't a criticism.
    • It means "gives no advantages". Is it criticism ?
  • 5. You can't stick code into a calculator and get a "productivity" rating, thus a "statistically significant difference" also has no meaning, because quality is not quantitative, yet the article contains numbers and formulas all throughout. This article was obviously written by someone who has not worked on a large-scale application.
    • As far as i remember, article discusses "commercial environment". Not "Calculator" program development.
  • The study appears objective and valid on first reading. However the summary above miss represents the conclusions of the study. The study does not claim "no significant difference in productivity" but states "no_evidence" of improved productivity on certain circumstances. The study accepts productivity gains have been demonstrated under different circumstances. The study admits the limits of it's own methodology using LOC. My feeling is the comment should be enhanced to properly reflect the contents of the study. MartinSpamer 15:16, 8 August 2007 (UTC)

Richard Mansfield wrote a controversial, widely discussed critique of OOP, asserting that "Even after years of OOP, many—perhaps most—people still don't get it. One has to suspect that we're dealing with the emperor's new clothes when OOP apologists keep making the same excuses over and over..." [2].

  • If this is true, then there are many very bad programmers. OOP is critical in the development of large applications. It still says nothing of whether OOP is good or bad, only that there are many bad programmers, and judging by the quality of many programs, this is no surprise.
    • It's your opinion. Many different opinions exists. For example, I think SOA is critical in development of large applications. We must mention only your opinion and not mention about the rest?
  • This a subjective opinion piece by a Journalist/Author not a Computer Scientist and is near worthless considering the sites own review system rates it at a lowely 2.4 out of 5.

Christopher J. Date stated that critical comparison of OOP to other technologies, relational in particular, is difficult because of lack of an agreed-upon and rigorous definition of OOP.[7]

  • What does a definition of OOP have anything to do with it. Objects are primarily structures and classes. There's your definition. Once again, this article only states that he was unable to make a comparison, which says nothing good or bad about OOP.
    • The absence of formal description, reduces OOP to the level of the cookbooks or astrology. The opinion Of CJD must be mentioned.
  • Christopher J. Date expertise is Relational Theory not OO. This is rather like asking Issac Newton to comment on General Relativity.
    • I don't think that OOP proponents comparable with Albert Einstein. CJD do research on Object Relational Mapping issues. IMHO, he is competent enough in OOP.

Alexander Stepanov suggested that OOP provides a mathematically-limited viewpoint and called it, "almost as much of a hoax as Artificial Intelligence" (possibly referring to the Artificial Intelligence projects and marketing of the 1980s that are sometimes viewed as overzealous in retrospect) [3].

  • Mathematically limited viewpoint? What does that mean?
  • Second, "I find OOP philosophically unsound. It claims that everything is an object. Even if it is true it is not very interesting - saying that everything is an object is saying nothing at all. I find OOP methodologically wrong.". Philosophically unsound? Everything is an object? Methodologically wrong? Keep in mind his article is in Q&A format, and he makes no explanations of these abstract answers.
  • Lastly, Alexander Stepanov currently programs in C++ (which is object oriented) and uses objects in his code. [[1]]
    • This is not reason, in order not to mention about his opinion. By the way, STL is part of C++. STL is not object-oriented.

Edsger W. Dijkstra wrote: ... what society overwhelmingly asks for is snake oil. Of course, the snake oil has the most impressive names —otherwise you would be selling nothing— like "Structured Analysis and Design", "Software Engineering", "Maturity Models", "Management Information Systems", "Integrated Project Support Environments" "Object Orientation" and "Business Process Re-engineering" (the latter three being known as IPSE, OO and BPR, respectively)." — EWD 1175: The strengths of the academic enterprise

  • Edsger worked on computers in the 1970's. He died before OOP even became mainstream, and was not a computer programmer working on large projects, but rather a computer scientist whom rarely left the lab. He was a theoretical physics major, and "Dijkstra was also noted for owning only one computer (late in life) and rarely actually using them." Need I say more?
    • This is not reason, in order not to mention about his opinion. Edsger W. Dijkstra is one of the acknowledged authorities of our industry
  • And finally, while I agree there are many snake oil salesmen in the computer science arena, classes are not seriously disputed. "Maturity Models" and "Application Lifecycle Management" may be hoaxes (I don't know enough about them to say), but objects in general are a necessity. If there are criticisms of these specific topics, they should be put in the respective topics, not in the main OOP article. Java, C++, C#, Pascal, Visual Basic, and even JavaScript are all object oriented.
    • EWD says "Object Orienation". Not "classes". Not "Visual Basic".

Using the EWD comment in this way is missleading, the previous paragraph(s) of EWD1175 talks about the difficultly of deciding if something is worthy or study or is snake oil. Many other EWD show his expertise in using objects for Abstractions. —Preceding unsigned comment added by 194.66.238.27 (talk) 18:01, 4 March 2008 (UTC)

Will removing critisism of OOP imply that it is the only way to program in all circumstances, and eventually supercede all other methods? Mrrealtime 23:29, 13 March 2008 (UTC)

[edit] Removal?

Who keeps removing the link to the Richard Mansfield article? If it does not "qualify", please state why.

And I removed the opening "real world" claim for reasons given later in the wiki article (3.3). —The preceding unsigned comment was added by 66.120.226.1 (talkcontribs).

I removed the entire external links section, not just this one particular link, because none of it met WP:EL. Wikipedia is a collection of articles, not a link farm.
The link is consistent with "Sites which fail to meet criteria for reliable sources
yet still contain information about the subject of the article from knowledgeable sources."
I don't consider Mr. Mansfield unreliable, I do consider his article to be knowledgeable.

Other people may have removed just this specific link in the past, and I can't speak for them; I can only talk about why I removed the external links. We should add verifiable, cited content to this article rather than a bunch of links to various people's opinions. The "further reading" section is in my opinion listcruft and probably needs to go, too. The books/articles which are citations should be moved to references, and those which are not citations should be removed from the article.

Now, about this link in particular. The Mansfield article does not meet any of the "What should be linked" criteria in WP:EL. It doesn't appear to me to be a reliable source. It's one guy's opinion, without a single citation nor even a real-world example. He states that OOP "isn't doing what it promises" without saying who, exactly, is doing the promising or what they are, precisely, and then compares it to Marxism! This is not research, it's a screed, and while he's more than welcome to post it on devx (more power to him, frankly, for speaking his mind), it doesn't meet Wikipedia guidelines for what should be cited or linked and doesn't belong here. --Craig Stuntz 21:02, 10 January 2007 (UTC)
The link is consistent with "Is it proper in the context of the article" and "Links to be considered".
I, personally, think it's unfair to the reader for you to remove it.
There are many people on the internet who are engaged in research and want to compare the
advantages and disadvantages of certain topics.
You ought to let educated readers decided what is valid or not for their research.

How is this different from Bertrand Meyer's opinions and rants in his often-cited book? There is very little proof of OOP being better anyhow. Thus, if we only stick to science, then this entry would be real short. OOP is largely a psychological phenomena, not a scientific nor mathematical one. Mansfield is the author of several technology books, I would note (but not directly about OOP). And, devX is published material. —The preceding unsigned comment was added by 68.183.137.111 (talkcontribs).

Well, Meyer doesn't run up against Godwin's Law, for starters. Seriously, are you really not able to see the difference between Meyer's book and the devx article? I find that difficult to believe, especially as I know you've read both. The point is not that Mansfield is somehow less of a reliable person than Meyer, it's that this specific piece by Mansfield doesn't even attempt to justify its assertions. Yes, Mansfield is capable of writing a cite-able source; he just didn't do it in this specific case. Oh, and the article does not claim that OOP is generically "better" (or worse, for that matter), nor should it. Assertions that a particular development methodology is "better" or "worse" are suspect by their very nature and certainly out of place in an encyclopedia. --Craig Stuntz 14:08, 11 January 2007 (UTC)
No, I don't see much difference. Meyer does use shape and animal examples with code, but those don't extrapolate to real-world problems. And he has several flaws in his reasoning, but we can't consider those because they are "uncited". Wikipedia is growing stale by limiting opinions and links. —The preceding unsigned comment was added by 68.183.137.111 (talk) 04:15, 14 January 2007 (UTC).


In http://www.amazon.com/Foundation-Object-Relational-Databases-Manifesto/dp/0201309785/sr=1-1/qid=1169208722/ref=pd_bbs_sr_1/103-9197091-7991048?ie=UTF8&s=books

the authors discuss inheritance with regards to an example of a circle which is a subtype of an ellipse. Other than redefining a data type to represent an object with two foci (which are the same if it is a circle) they find very little utility in inheritance beyond the what can be provided via a database view, which uses the well-known normalization transform of a super type sub type relationship. IMHO anything beyond this "inheritance" is pure garbage, and cannot be supported be rigorous theory.

For example, read http://www.amazon.com/Core-J2EE-Patterns-Practices-Strategies/dp/0130648841/ref=cm_cr-mr-title/103-9197091-7991048. There are many "Patterns" such as the Business Delegate, but no rigourous, mathematical formulation of why they exist or are helpful compared with other alternatives. -Anon.


Gentlemen. This is not the place to debate the merits of OOP; this is the place to discuss the article. People's personal opinions of inheritance, etc. (and I agree that inheritance is quite frequently abused) aren't relevant here. There are many notable critiques of OOP in various contexts (Chris Date is generally a reliable source; though he avoid comment on OO outside the scope of databases) without happing to cite unreliable sources like tablizer, this Mansfield article, etc. Go find them.  :) If you want, write an article about the Circle-ellipse problem; it's certainly deserving and lots has been written about it. --EngineerScotty 19:04, 19 January 2007 (UTC)
The circle-ellipse problem is not very practical in my opinion. Too many OOP books use shape, animal, and device-driver examples. They may be okay for studying philosophical concepts or basic training, but they are difficult to apply or compare to more real-world problems. At least "tablizer" uses banking and power utility examples. --Anonymous.
  • Non-sequiter for several reasons: 1) The above comment concerning tablizer.com was not made because I like or dislike the page in question; it was made simply because tablizer.com doesn't meet Wikipedia's requirements for a reliable source. It's self-published and not peer-reviewed, it's ignored by the literature, and tablizer isn't recognized as an expert in the field. (For that matter, tablizer doesn't even like his real name being printed). 2) The circle/ellipse example is entirely appropriate, as it illustrates a basic issue. That said, the OO literature is full of examples of complex applications being implemented beyond shapes and critters and what tablizer (and you--assuming you aren't him--if you are User:tablizer you should log in rather than pretending to be an anonymous third party) refers to as "device drivers". At any rate, I'll work on the circle-ellipse page; there's a good start there. --EngineerScotty 18:27, 22 January 2007 (UTC)
  • Tablizer - notable source on "OOP criticism" topic. Try googling "OOP criticism", "Object oriented programming criticism" User:Bibikoff
Coming up at the top of a Google search does not make you a notable source. Nor does it make you meet WP:EL. Please respond to the wealth of reasons listed on this page why it's neither notable nor WP:V verifiable rather than just keep plugging it back into the page. You might also want to read WP:SOCK, which is Wikipedia official policy. Thank you. --Craig Stuntz 13:06, 10 August 2007 (UTC)
1) About WP:SOCK. Personal insults do not make your position more convincing. I'm new to English wikipedia. I work on russian one. You can [verify this]. can you present any proofs?
2) About WP:EL. It states "...What should be linked... 3. Sites that contain neutral and accurate material that cannot be integrated into the Wikipedia article due to copyright issues, amount of detail (such as ... online textbooks) or other reasons...". I think B.Jacobs's site falls under this criteria. It's good starting point for people interested in OOP disadvantages.
3) About WP:V and WP:N. This is the debatable question. But you "forget" about WP:NPOV. It says that "All Wikipedia articles and other encyclopedic content must be written from a neutral point of view (NPOV), representing fairly and without bias all significant views..." and "...Detailed articles might also contain the mutual evaluations of each viewpoint, but studiously refrain from asserting which is better... ". You consecutively delete information about the OOP deficiencies. Will article become better by this? Decide yourself.
4) Why did you delete link on Mansfield article? Community didn't reach the consensus on this concern.
5) Craig, maybe we together can find appropriate way to present info about OOP criticism resourses. Waiting for your reply. Bibikoff
(1) No offense was intended, certainly. The simple fact is that in the first edit you (apparently) ever made to EN wikipedia you marched into the center of a long-running discussion and apparently didn't consider what was written here before doing so. How do you think that looks? The point isn't to accuse you of being a sockpuppet, it's to point out that your actions make you look like one.
(2) Same as (3); see below. Sources for articles on fact need to be verifiable.
(3) WP:V is absolutely non-negotiable. It's official Wikipedia policy, and there aren't exceptions. See, especially, "Sources." I won't bother to quote the entire page to you; you can read this yourself, but do note the bits about self-published sites and publications "with a poor reputation for fact-checking or with no editorial oversight." (Which describes most of the technology press, sadly, with webzines like devx only marginally worse.) We need data on this subject, not opinion pieces.
(4) See 3; it's not verifiable.
(5) This is the most important point, actually. Why fight to have lousy sources restored when energies could be better expended at finding good sources to represent the POVs you'd like to include?
--Craig Stuntz 17:26, 10 August 2007 (UTC)
  • I would like to see citations for "examples of complex applications being implemented beyond shapes and critters" (and device drivers). For example, comparative business applications. I don't dispute that such examples run, but I dispute that there is any literature that clearly shows how they are objectively better than procedural/relational equivalents. The scientific case for OOP for business applications is nearly non-existent. --Tablizer 04:45, 29 January 2007 (UTC)
PJTraill 19:16, 20 January 2007 (UTC) I have written Circle-ellipse problem.
They are certainly not! Object-oriented programming is about programming and not run-time efficiency. The end-product can very well be exactly the same. Or in some cases it may be even better if you use procedural programming and relational knowledge. It is not about the result, it is about the methodology! If you understand your world better using relational knowledge that's all right. Other people identify objects within their representation of the world, that's also not bad either. For example I don't have to worry about whether Mrs. Simpson has a beard. For a relational database this is of course an issue. And it may be right after all, but for me it is just a matter of taste. However, I think it is clear that the article is about object-oriented programming and disputes about whether the end product is better or worse are wrong, because this is not the issue.Dpser 12:41, 29 January 2007 (UTC)
Could someone please clarify where run-time speed was brought up as an issue? There seems to be a speed-related response, but no original matching statement.--66.120.226.1 20:57, 1 February 2007 (UTC)
Discussing whether OOP is "better" (or "worse") than other methodologies completely misses the point. The article makes no claim that OOP is "better" or "worse," nor should it. The article is intended to describe OOP, not advocate an opinion about it. --Craig Stuntz 14:53, 29 January 2007 (UTC)
Agreed with Craig. To address top's point--there isn't literature which "clearly shows" that other paradigms (relational, functional, procedural, what have you) are "objectively better"--and as you've pointed out long and loud at other forums, such comparitive studies are highly difficult. Lots of people who can be considered experts--Chris Date, Peter Norvig, Bertrand Meyer, to name three, have weighed in on the debate; feel free to add cites from these on the subject. But as Craig points out, this is not an OO or relational advocacy forum. We're not here to decide which is better. --EngineerScotty 16:35, 29 January 2007 (UTC)
I disagree with your and Craig's point of view. Most knowledgeable experts will list advantages and disadvantages of a giving process or paradigm. I think listing the known disadvantages of OOP is beneficial to the community.--24.8.150.120 07:51, 15 August 2007 (UTC)--24.8.150.120 07:51, 15 August 2007 (UTC)
The question isn't "should it be done?" The question is "Can it be done verifiably?" Asserting that it should be done doesn't answer the question on the table. IMHO any verifiable information is welcome here, but I've tried to find verifiable information on the pros and cons of OOP (see elsewhere on this page) and haven't come up with much. --Craig Stuntz 13:08, 15 August 2007 (UTC)
If one is to follow edit according to verifiability, one would have to remove all the positive and negative assertions that haven't been cited yet.--24.8.150.120 19:57, 17 August 2007 (UTC)
Or cite them; sure. Feel free to contest anything you don't think is true. --Craig Stuntz 13:25, 21 August 2007 (UTC)

[edit] Timeline

Object-oriented programming developed as the dominant programming methodology during the mid-1980s,[citation needed] largely due to the influence of C++, an extension of the C programming language.

No way. I remember my first job in 1986, and everyone was using C. Mid 1990's, maybe. And as far as I know, it was "largely due" to Java. I know this because I happen to be a Java programmer (persons with no sense of irony, please do not reply to that).

Paul Murray 05:52, 31 January 2007 (UTC)

I think 90s is more accurate, and I think C++ and Java would be more accurate. But I'm reluctant to change it from one person's recollection to my own without a good source. --Craig Stuntz 14:24, 31 January 2007 (UTC)

OOP was not dominate in mid-1980's due to C++ or anything else. COBOL was still dominat in the 80's - University courses not-withstanding. And despite C++ being an improvement over C, it wasn't much used for OOP (again outside of University courses). OOP didn't gain any real traction until Borland Object Pascal and Delphi put it in the hands the business programmers so they could study it up close. But OOP couldn't begin to claim dominatation until JAVA became the lingua-franca for the new class of business systems (client-server/web-based) starting to be developed in the late 90's. Complete legitimacy in the business world was achieved only when SAP added OOP to ABAP in the early 2000's. -- HKL47 04:06, 15 March 2007 (UTC)

Another issue is that it's origin had nothing to do with the "software crisis". Instead it was born in physical simulation systems, not as a response to what Bertrand Meyer calls the "software crisis". Meyer tends to spin the history to fit his view. But, I've yet to find a cite-able source for the simulation-based origin. —Preceding unsigned comment added by 208.127.151.158 (talk) 06:27, 5 November 2007 (UTC)

[edit] Argumentation unclear

"Pure" object-oriented languages, on the other hand, lacked features that many programmers had come to depend upon. To bridge this gap, many attempts have been made to create new languages based on object-oriented methods but allowing some procedural features in "safe" ways. Bertrand Meyer's Eiffel was an early and moderately successful language with those goals.

I do not understand what this means: which constructs were added in Eiffel (so much that it can be seen as a goal of the language) to support procedural features that many programmers had come to depend upon? --Schoelle 23:37, 23 March 2007 (UTC)

[edit] Argumentation unclear, part two

Under "Polymorphism " is the following: "it's very useful, once it improves code readability, to enable implicit conversions to the correct handling method when apply add() method to integers, like in add(1,2), or to strings like in add("foo","bar") since the definitions of these signatures are available."

First of all, the sentence should be capitalized, but beyond that, I cannot make sense of it. The sentence appears to be headed off in several different directions without enough transition to ascertain where it is headed. Actually, the more I look at it, the more it seems to resolve itself simply by removing the independent clause, "once it improves code readability." That's a clumsy phrase to begin with. And unless someone else can figure out what really is intended, I say, let's get rid of that one clause--and capitalize the first word.

--C-U RPCV 05:09, 12 April 2007 (UTC)

I find the whole Polymorphism section extremely badly-worded and difficult to understand. Will someone with a better understanding of the subject than me please rewrite it.

Why does the link "Checking type instead of interface" Anti-pattern redirect to this page? I'm not sure what it should link to, but this page isn't about that anti-pattern but OO in general, right? 209.129.94.61 17:33, 8 May 2007 (UTC)

The Polymorphism section is unreadable garble. Most of the sentences are grammatically incorrect, fragments, redundant, or confusing.

Rather than adding to the whining, I'll take some initiative here. I hope an expert will check the correctness of my revisions after I make them. Fisherm77 14:16, 15 June 2007 (UTC)

[edit] Clarification/contrast of Microsoft .NET (CLR) vs Sun Java (JVM) - primarily their respective intent/effect.

Note: This is User:Greg tresters edit meant for the talk page

In article:

In the past decade Java has emerged in wide use partially because of its similarity to C and to C++, but perhaps more importantly because of its implementation using a virtual machine that is intended to run code unchanged on many different platforms. This last feature has made it very attractive to larger development shops with heterogeneous environments. Microsoft's .NET initiative has a similar objective and includes/supports several new languages, or variants of older ones.

User:Greg tresters comment:

This is innaccurate - Microsoft's .NET Framework (see <a href='http://en.wikipedia.org/wiki/Common_Language_Runtime>CLR</a>')is not to be confused in intent, nor implementation with Java's concept of a JVM.. CLR requires the resultant bytecode to be run on the Windows platform; the JVM allows the resultant bytecode to be run on any platform where the JVM has been developed. Think of .NET as "language agnostic, platform affinitive", and Java as "platform agnostic, language affinitive". --Zven 08:48, 18 May 2007 (UTC)

I agree with Greg's assessment. Microsoft have never stated that the goal of .NET was platform independence. Having multiple languages compiling to the same bytecode, allowing the same runtime to be used for those languages IS a stated goal, however. --Surturz 02:55, 21 May 2007 (UTC)

[edit] Delphi

Why is it that delphi is always bypassed as an oop language, this seems to be very common especially alot of oop concepts ended up in .NET.

I use Delphi and like it a lot. I think most people in the OOP community do not consider Delphi a pure OOP language because it allows the programmer to use and write plain procedures and functions; Delphi allows you to write procedural programs.--24.8.150.120 07:55, 15 August 2007 (UTC)
Also not everthing in Delphi, like a string or an integer, is an object. --75.71.70.81 09:32, 27 August 2007 (UTC)
To be precise, not everything in Delphi for Win32 is a TObject subclass. In Delphi for .NET, every type is a subclass of System.Object. "Plain procedures" in Delphi for .NET are methods of the implicit Unit class. --Craig Stuntz 02:28, 29 August 2007 (UTC)

[edit] Association - Aggregation and Composition

I think this topics are lack of examples.

//
class material 
{
  private String name;
  public material () {
  }
  public void setNM(String X) {
     name = X;
  }
  public String getNM() {
     return name;
  }
}
 
class List 
{
  private material m01;
  public List() {
  }
  public void setMat(material X) {
    m01 = X;
  }
  public material getMat() {
    return m01;
  }
}

Would you like to help me ?

regards

Witart 02:12, 23 June 2007 (UTC)

[edit] This may be useful for the article

On who coined that term and where ( http://www.purl.org/stefan_ram/pub/doc_kay_oop_en )... --85.139.120.189 04:26, 26 August 2007 (UTC)

[edit] Unlike something, but... how exactly?

In the current version of the page we can read at a certain point that "[...] Oberon, included a distinctive approach to object orientation, classes, and such. The approach is unlike Smalltalk, and very unlike C++." I personally believe that this hint should either be removed or complemented even with the briefest positive description of what the approach is like: just telling what it is not like doesn't help much. --Blazar.writeto() 20:35, 23 October 2007 (UTC)

You have a point there, that section should be clarified or removed. IIRC, Wirth introduces the concept of "type extensions" in 1988. In contrast to other languages, type extensions are very "low level": all you are allowed to do is to extend RECORDs (structs) at the end by extra fields (see [2]). Pointers to such records are the polymorphic, following the implied "single inheritence" hierarchy. Also, some later dialect of Oberon (I think it was Oberon.NET [3]) introduce "Facets", which are very similar to Java interfaces (just subtyping, no inheritence). I am not sure which mechansism the original author referred to. --Schoelle 07:49, 25 October 2007 (UTC)

[edit] Changes by 59.183.251.132

I do not mind to simplify the list of fundamental concepts, but the changes by 59.183.251.132 seem to oversimplify ("A method is the ability of an object."). Also, they do not cite a source (looks like a case of WP:NOR), so I undid the changes. --Schoelle (talk) 07:28, 23 November 2007 (UTC)


[edit] Real World examples

We've all read the "bicycle is an example of a vehicle", "cat is an example of a mammal" examples, but in day to day programming these are meaningless, and only add confusion. In practice, a base class contains a subset of properties usable by all child classes, to which they add or override specific methods and attributes to do useful work. IMHO functional, rather than a "set theory" approach is more helpful. —Preceding unsigned comment added by 65.43.175.214 (talk) 03:47, 26 November 2007 (UTC)

[edit] Criticism again

I wish I had a penny for every WP article with a poor criticism section... Here's the thing. These are terrible criticisms. Date is a non-criticism so I have no idea what it is doing there, although Stallman is clearly a critic of OOP in that quote it is not clear what his criticism is. Dijkstra is better, but it really doesn't help me to know that he called OOP "snake oil." My friend called OOP "a bunch of sillyness" but that isn't going to get listed on WP. Why? Its not notability - its because its an empty and uninformative criticism.

Stepanov and Potok get bonus points for actually having a substantive complaint that gives me information about possible failures of OOP that I didn't know before I read the section. The other lines are pretty useless, the possible notability of their sources aside. Not everything Stallman says is worth writing down.

Thoughts? Agreement? Disagreement? I'll let this idle around for a while before I make a change. 66.216.172.3 (talk) 20:46, 6 February 2008 (UTC)

You shouldn't make a change because those are interesting quotes from interesting people. —Preceding unsigned comment added by 71.237.89.49 (talk) 08:53, 22 February 2008 (UTC)

[edit] Origins in artificial intelligence?

I have heard a few times from separate sources that OOP has its origins in AI. Can anyone confirm or discredit this rumour? Pgr94 (talk) 13:13, 28 February 2008 (UTC)

Just came across: "Mark Stefik and Peter Friedland (Molgen, the first object-oriented representation of knowledge - 1978)" Brief history of artificial intelligence @ aaai.org Pgr94 (talk) 16:10, 26 March 2008 (UTC)

[edit] Object system

Object system redirects to this article. What does it mean? --Abdull (talk) 20:38, 21 March 2008 (UTC)