JavaScript Object Programming (JOP)
Gateway Page
© 14 May, 2016, MartinRinehart
JOP Gateway
Choices are also on the menu, above.
- The Coding Tutorials provide hands-on work for the reader that wants to master JavaScript programming for class-based inheritance and prototypal inheritance.
- The JSWindows system demonstrates both class-based inheritance and object programming. A major design goal of JSWindows was to be sure no user ever needed documentation for Using JSWindows. These pages are for engineers who need to learn more about the system's UI.
- The JWindows Examples are for engineer's who want to use the system for their own applications.
- The full JSWindows Source Code is for those who like to know how things work.
Notes (below) on this page include yellow reference keys used in the back of the JOP book's "Notes" pages. A reference to "Clss-6" there corresponds to Clss-6 here. (You might want to look that up if you did not know that class-based OOP was now available even in the Cobol language.)
The following links were verified 11 June, 2013; 28 July, 2013; 11 November, 2015.
JavaScript People
Brendan Eich: JavaScript's first version was designed and written by Brendan Eich. His personal site tells you more about his current work as CTO of Mozilla (best known for the Firefox browsers, Netscape's successors). Today Eich chairs the ECMA Technical Committee 39 (TC39) that is responsible for the international ECMAScript (aka JavaScript) standards. His Wikipedia biography is too short.
Douglas Crockford: Crockford is well-known for his book, JavaScript: The Good Parts, for his JavaScript quality checker, JSLint, for finding Eich's object literal notation to be a quality data-sharing vehicle he named JSON, for serving on TC39 and being top JavaScripter at Yahoo! and today at PayPal. His Wikipedia biography includes a "Criticism" that is more amusing than critical.
Books re JavaScript, Programming and Object-Oriented Programming
Conflict of interest: JOP is sold by Amazon (wholesale and retail). Links to Amazon for books in print are, however, common today, even in libraries, as they provide considerable information, well beyond what one might find in a card catalog.
Classics: In chronological order, classic books referenced in JOP are:
Mythical Man-Month, The, Brooks, 1975, on the difficulties in developing software
C Programming Language, The, Kernighan and Ritchie, 1978 (2e, 1988), the best book ever on programming in a specific language, and
Design Patterns: Elements of Reusable Object-Oriented Software, Gamma et al (aka Gang of Four, or GoF), 1994 on designing software.
C++:
C++ Programming Language, The, Stroustrup, 1986 (4e, 2013), classic by the original author of C++.
C++ Primer Plus, Prata, 2011.
Thinking in C++, V1, Eckel, 2000 (still on your author's shelves).
Java: There are too many Java books and your author has written some of them. This is another author's list.
JavaScript:
JavaScript: The Good Parts, Crockford, 2008, a must read, but not for beginners.
Professional JavaScript for Web Developers, Zakas, 2012
JavaScript: The Definitive Guide, Flanagan, 2011 (6e). (Not recommended prior to the fifth edition.)
Python:
Core Python Programming, Chun, 2e 2006 (still on your author's shelves).
Visual Basic:
Visual Basic in Visual Studio 2015 the official Microsoft language site, linking to their books.
Wikipedia on Object-Oriented Programming, Class-Based Inheritance and Prototypal Inheritance
Oop-WObject-Oriented Programming. The first paragraph is perfect.Prtp-WPrototype-Based Programming. Ironically, an excellent description of class-based programming. A good summary of the argument for prototypes as opposed to classes.
Clss-WClasses (but beware of the first sentence).
Inst-WInstances (objects), very good beginner's introduction, very poor Wikipedia article.
Mthd-WMethods, another good introduction, but "class" must be defined broadly to not exclude prototypal language methods.
Inhr-WInheritance inadvertently, but correctly, defines "classical" inheritance as OOP inheritance (as opposed to prototypal inheritance). Supports the use of "super," a term to which we object.
Cmp-WComposition over inheritance. The idea is the same, but I hope JOP is less confusing.
Trts-WTraits "Traits" may be close to, or the same as, our "capabilities," but this article is not clear enough for any certainty.
This Website on Class-Based Inheritance and JavaScript Programming
Master Classers, a comparison of OOP library APIs (plus Crockford, on prototypal, and your author on plain JavaScript).
JavaScript Classes, a set of pages, most predating this book, on various class/prototypal topics. Some may be quite obsolete.
Cheryl rule on JavaScript readability.
Other Websites on Class-Based Inheritance and Prototypal Inheritance
Object-Oriented Programming:
Oop-1OOP and related terms from Java's source, Sun (now part of Oracle).
Oop-2OOP defined including a good description of classical data modeling.
Oop-3OOP in C# and Visual Basic the gospel according to Microsoft (not different from classical OOP as described in JOP). Cites "full support" for "encapsulation," "inheritance" and "polymorphism."
Oop-4OOP in Python introduced, including another explanation of objects as reducers of complexity.
Oop-5The view from Norway, 1995. Norwegians claim (with considerable justice) to have invented objects and classes.
Prototype-Based Programming:
Prtp-1Overview from princeton.edu. Substantial agreement with Wikipedia. (Now, 11 Nov., 2015, 'is a' reference to the WP article.)
Prtp-2Academic research from Université de Montpellier (France) including basic charts, a must for anyone who cares about the genesis of object programming (or who enjoys French English: "Distinction between variables et[stet] methods").
Prtp-3Prototypes in Python? Yes, in Python.
Prtp-4Prototypal programming in Self, Io and JavaScript.
Prtp-5Advantages of prototypal programming, a forum post answered by one who knows classical and prototypal in game programming.
Classes:
Clss-1Objects and Classes, per Adobe. Adobe ActionScript was a superset of JavaScript (now fading, banned by Apple).
Clss-2What Is a Class? from Sun (now part of Oracle) the creators of Java.
Clss-3Classes in PHP. PHP, arguably the only important language without OOP, joined the club with PHP5.
Clss-4Classes in JavaScript, from MDN. The MDN (Mozilla Developer Network) JavaScript documentation is the best single source for the language. It says JavaScript functions can be classes.
Clss-5Classes in OOP according to top authorities like Yourdon and Booch.
Clss-6Classes in Cobol (yes, Cobol!) "OO COBOL implements a classical object model."
Instances:
Inst-1OOP Terminology Including Instance in Python but applicable to all OOP languages. Good distinction between instance and class variables.
Inst-2Objects, Instance Methods, and Instance Variables, per hws.edu (Hobard and William Smith) solid re the basics. (broken 130728)
Inst-3Objects Defined per marakana.com courseware. Correct, academic-flavored definition (state, behavior and identity).
Inst-4Classes and Objects in Objective CAML for a little variety.
Methods:
Mthd-1From Think Java, one book on Java. There is no debate on the definition of "method"—an action that an object (or class, for class methods) can perform.
Mthd-2Methods in Ruby.
Mthd-3Methods in C++.
Mthd-4Methods in Fortran with OOP added, Fortran is still important if, for example, you need weather forecasts.
Inheritance:
Inhr-1On inheritance in Python.
Inhr-2Definition from kioskea.net neatly demonstrating why we don't use terms like "subclass" and "superclass."
Inhr-3Inheritance in JavaScript implemented via the prototype chain, which we think is suboptimal.
Inhr-4Using Visual Basic, from fau.edu (Florida Atlantic University. Gone as of 11 Nov., 2015).
Inhr-5Traditional Discussion from oregonstate.edu including classic "is a" and "has a" distinction.
Inhr-6Inheritance in Perl, from gantep.edu (University of Gaziantep, Turkey) stands up for Perl (not our favorite language, but now OOP enabled).
Composition:
Cmp-1Composition versus Inheritance casts another vote for the Gang of Four, in depth.
Cmp-2Composition v. Inheritance, per JavaWorld (limit inheritance to true "is a" relationships).
Cmp-3Composition v. Inheritance v. Aggregation (a distinction that we don't find helpful, but...).
Cmp-4Composition v. Inheritance v. Association from umsl.edu, (University of Missouri, St. Louis in case you wanted to go beyond aggregation. Gone as of 11 Nov., 2015.)
Feedback: MartinRinehart at gmail dot com.
# # #