OopSchool

| Forum | ForumNorway | Links | Ordered |
MultiFinanceIT | DigitalStart.net | W3Toolbar | CyberToolbar | BrowseToolbar | Expert-Links.net | SurfToolbar | RedCarpetRank | Web2Logistics | Ad-University | AdSchoolWorld |
Cetus-links Simula | CIM | DIRO Simula | Simula Start | ASU | Engin Simula |
Cetus-links | gbeta | Mjølner 5.0 | OOP in BETA | PDF Book | BETA Intro | An Overview | Abstract | Mjølner System | FAQ | MetaBETA |
Language Tutorial | BloodShed | C++ | C++ Reference | Free Compilers | Bjarne Strostrup | C++ in 2005 | C++ Home | Xerces C++ Parser | C++ France |
C# corner | C# station | C# help | C# OverView | C# Programming | C# Friends | Master C# | C# Source | C# Computing | C# | C# Home |
SDN | Java-Source | JavaWorld | JavaReport | Java.com | JavaFile | CoreServlets | On the Java Road | blogs.sun | JSP Insider | Java Boutique |
Builder | Arch | Sec | Zend | DOC | Security | FrameWorks | ionCube | XDEBUG | WACT | L-D | L-D Mod | ErrorH | Patterns | Planet | kitchen | Editors | Res |
What is OOP Perl | OOP | CosmicPerl | Training | Books | BetaAPP | Bookshelf | Perl.org | CPAN | IT | Start | Monks | WebRef |
Ruby Talk | Ruby On Rails | RailsContributors | Ruby Central | Ruby | DesignPatternsInRuby |
GlenMcCl | D-MARS | DwvX | Dev Art | JS obj | eRain | SourceForge | DevShed | VCLComp | SourceCode | DDrive | Jawfish | BYTES | opensCMS | NAG | c-Point | J Smiley |
Hawkee | mojo | XAV | BigW PHP | jQuery | Archive | Delta | Bratta | Scripts | proxy2 | 12Scripts | Tufat | INCUTIO | JS Kit |
Strostrup's Links | Cetus-links | OOPWeb | Google Dir | Objenv | PHP | SUMit | Object FAQ | Wiki OOP | Yahoo answ |
LinuxQ | WMW | WMT | phpBB | Fedora | Zend | AJAX | Rails | Proxy2 | PHP Builder | SP | DevShed | DigitalP | PHP-UG | Mobi | India |
Ulysses Framework      Smarty

Putting professional PHP 6 code on the web::: An example.

C++ Builder 2009 Professional::: Getting started PDF download.

C++ Builder 2010 Professional::: Getting started PDF download.

Related links

	
Before you start on your project, use and fill out the following three cards that shall be continually updated: Yellow User (Client) story card, with Date: Story/Number: Description: Estimate Blue Engineering Task Card, with Date: Story/Number: Software engineer: Task estimate: Task description: Green Class card, with Responsibility: Collaboration: Some great online resources for your project: UML Extreme Programming Refactoring JUnit testing PhpUnitTesting Sebastian Bergmann PHPUnit.de Download PHPUnit Unit Testing with PHP githubde Agile Software Development: A gentle introduction Finally ask yourself. Can I use external server scripting libraries like: pear in my project? Can I use external client scripting libraries like: jQuery in my project? Can I use design patterns? Finally: Program to an interface and not to an implementation. books and resources Professional PHP 6

Kjell Gunnar Bleivik 05.07.2009::: Computing or drawing?

Today, French-Russian mathematician Gromov won the Abel prize for his contribution to differential geometry, curved, that is nonlinear spaces and shapes. Very little in nature is linear. A cloud is non linear. Shapes and curves you draw with your finger on a touchscreen is also nonlinear. Can these curves generate code? Can you build programs by touching a screen with your finger or a pen?

Generalization lifts computing to a more abstract, but at the same time also to a more practical level. If you have read the above PDF document, you would have noted that computing is in a sense reduced to dropping components on a form. Patterns generalizes classes and components generalizes patterns. The next step in the evolution of programming may combine

  • Touch screen,
  • net clouds
  • and component dropping on a form or another graphical object.
The code is generated behind the scene. The most difficult part in "component programming" is combining the different components to a functional program, in short writing the event handlers. Even this element can be automated, fully or partly. It should be able to drop event handlers from a palette and combining components by moving your finger on a screen (form) from one component to another. That can of course be combined with the old manual way of writing code. Components may be located in the cloud, your desktop or on a web server. Most of us have seen an iPhone3G in action. Few of us have seen C++ Builder 2009 professional in action. Cloud and grid computing are the last concepts in computing. Big Blue, IBM is one of the companies that is leading the way in cloud computing. They visualize a net cloud where all (most) of your data and applications live in a colud that is located on the internet. So in the future, computing or perhaps more correctly, programming is more similar to art and paiting, than dropping components on a form that are sewed together by writing code. Related links:

The future of programming languages

Related articles:

  1. Programming Languages: Managed versus Native

From object oriented programming, via design patterns, components and abstract visual programming.

This site will focus on good OOP practice in the tradition of Simula and BETA. In BETA, "everything" is a pattern. Patterns are now also fully integrated into PHP and ajaxpatterns and principles are maturing. Patterns are also being introduced in JavaScript. The Yahoo JavaScript Module Pattern is an exellent example of a very useful pattern if you use the Yahoo user interface. There are no class concept in JavaScript, but you can simulate class functionality. I wrote a post at WPW about a soft introduction to object oriented programming that starts with JavaScript. That is a good starting point, even though you may be confused by the many links.

You do not wear a sewing pattern. On a modern sewing machine, a mini computer, you may use a lot of predefined patterns. You do not wear a pattern. You wear cloths. Jason E. Sweet defines it like this in the first book on design patterns in PHP.

Design patterns are a template for how to organize your code, so you can take advantage of a tried-and-true design.

JavaScripting has get a renewed status with the emergence of new technologies like XHR and AJAX. Here are some resources on DOM building and DOM Scripting in addition to those on the toolbar and on DigitalStart.net.

With firebug, you can debug your web pages in real time and look at the code of other websites that are driven by JavaScript. There is an thought provoking article "Monkeypatching is Destroying Ruby"

""Monkey patching", for anyone who doesnt know, refers to the practice of extending or modifying existing code by changing classes at run-time. It is a powerful technique that has become popular in the Ruby community at least in part because the Ruby language makes it so easy. Any class can be re-opened at any time and amended in any way".

Since PHP is becoming more and more a true object oriented program, the site will also foccus on PHP, since PHP is good enough for a lot of web programming tasks like delivering web services. If you are used to writing HTML and designing in CSS, PHP is also a natural next step in your learning cycle. If you combine PHP with a simple database as e.g. MySQL you are also able to make your own content management system and develope proffessional databasedriven ecommerce sites. If the only tool you have is a hammer, everything soon starts to look like a nail. Use the simplest (and most efficient) technique to solve a specfic problem.Use the simplest (and most efficient) technique to solve a specfic problem.

When ( if) you (already) understand JavaScript and JavaScript Objects, the natural next step is to learn PHP. PHP is a powerful language that support the most important database plattforms as MySQL, PostgreSQL, Oracle, Sybase and MS SQL server. As an example, consider you have a database connection class for MySQL and PostgreSQL. Both share a common method (API), query. Then you may use the same code on different database servers. I can also highly recommend the Sitepoint book: "Build your own AJAX Web Applications." That is another soft introduction to object oriented programming where you learn a lot of technologies in addition to developing your own web applications. In addition it has explicite sections on how you shall make accessible web applications for disabled users. The idea is to show content for people with disabilities using simple CSS stylesheets and hide that content for able users. Excellent book where you learn much.

In the mide 1990's I wrote some fairly advanced classes that you find in the C++ subforum on ForumNorway. Some of the code examples illustrate the use of templates and are fairly compact. The code is well documented and may be worth a study if you are writing template based code and generics in C++.

The concept of object oriented programming (OOP) has been used and misused in various connections. A lot of programming languages claim to be object oriented. Abstraction is a central element in OOP. Four basic principles defines the object oriented approach to abstraction. These are:

  • data abstraction
  • behaviour sharing
  • evolution and
  • correctness

These are the same as used in what we will call a classic book on OOP, Blair et. al. (1991) page 6. When you have read the first 5 chapters of this book, you will have understood that it is meaningless to try to define object oriented programming. Instead a design space for OOP is constructed along four dimensions

  • Polymorphism (flexible sharing).
  • Encapsulation
  • Classification
  • Interpretation

This framework bridges the gap between OOP principles and OOP technologies.

Note that there are alternatives to classes like actors and prototypes. Class based OO languages emphasize structural abstraction. Actor languages are primarily concerned with the communication structure of interacting process. Actors are basically computational agents that communicate via delegation. This is a more flexible form for behaviour sharing than inheritance. Each object or prototype defines its own type.

Binding is very important in OOP. There is a difference between dynamic and static binding. C++ code are for instance compiled, while PHP is a preprocessor or interpreter. Interpreted code is more flexible. Think of compiled code as a fixed table in memory. Interpreted code may be thought of as a more flexible space in memory that lives when the application is run. PHP is a loosely typed language and in version 5 it has become more OO. So go for PHP 5.0 and above.

PHP 5.3.0 Released:

Before you start with PHP, you should read the PHP License.

It has been said that the PHP manual can be read as a book. Here is the manual, some important chapters and other resources:

pear: PHP Extension and Application Repository

You can get a flying start by downloading and installing XAMPP for Windows or Linux. XAMPP is an easy to install Apache distribution. The distribution for Windows 98, NT, 2000 and XP. XAMPP version 1.5.2 contains: Apache, MySQL, PHP + PEAR, Perl, mod_php, mod_perl, mod_ssl, OpenSSL, phpMyAdmin, Webalizer, Mercury Mail Transport System for Win32 and NetWare Systems v3.32, JpGraph, FileZilla FTP Server, mcrypt, eAccelerator, SQLite, and WEB-DAV + mod_auth_mysql. I downloaded and installed the package in 5 minutes. Then you have your own (test) webserver (do not put it on the web without configuring it since the default installation is open to everybody with a browser), database server and PHP plattform. Use it as a testserver. Now you have an excellent plattform to learn OOP in PHP. You can cut the connection to the internet and make and test advanced database driven content management systems (CMS) before you put them on the web.

PHP Web Services

Note, the need to use Web services has decreased with PHP 5 and above. Often it is enough to use simplexml functions. The SimpleXML extension requires PHP 5.x and is enabled by default. According to Robert Richards (2006) page 492, it appears that PEAR will not be included with a default installation of PHP 6. You mus manually install the PEAR core and installer. Also note that those new to XML often run into problems when dealing with documents not based on the ANSI encoding or the UTF-9 encoding. Basinc knowledge of Unicode is highly suggested, because you will need to understand what it means for a string to be encoded and why it is important to know what encoding is used. The libxml2 library supports a few additional encodings natively and when built with iconv support, it can support all encodings supported by iconv. Note that XML documents are internally stored used UTF-8encoding. Interactin with XML data in those cases must be performed using UTF-8 encoding. For these reasons, properly declaring your XML document and using the correct encoding is important. Also note that the X in AJAX stand for XML, so understanting the XML family of technologies becomes more and more important and some mean that XLink will revolutionize Web linking. Nicholas C. Zakas, coauthor of Professional AJAX runs his own website with a lot of useful extensions. The problem is to find the best extensions and libraries. Som libraries and extensions are not needed in the latest versions of PHP, so before you run to install a third party library, take some time to see if a simpler solution is available. My own site has a lot of resources related to AJAX, Ruby and web 2.0 developement. Another of my sites, DigitalStart has a lot of information on the XML families of technologies, well-formed and valid documents. An XML document must be well foremd, but need not validate. In addition to SimpleXML there is another model, DOM that is used to manipulate XML documents. This API is larger, but together the two technologies can solve most problems regarding XML problems. We added thi introductory note about the XML family of technologies, since our main principle, make it simple, as simple as possible, sometimes say that using the SimpleXML API is all that is required to consume a web service.

Web Services providers and resources

Optimize, structure and document your code. Cache your pages where possible.

Building portable applications

PHP resources for image manipulation

Syndication standards and important URL's for those standards.

The following resources and standards are important. There are no universal agreement in RSS. Probably the most complex RSS structure is RSS 1.0, at least of this writing in july 2007. Once you understand an RSS 1.0 document, the other syndication formats will be much easier to use. Atom is an other format that was created because of the disagreements in the RSS community. In strict mathematical term, a URL is a subset of a URI that is a subset of an IRI

Syndicate and import content to your site

Here are some resources that should help you in syndication and importing external content to your site:

As an additional example, consider you have a class library, for example pear or PHPclasses and you have browsed the library and found a Database Abstraction Layer or the newer MDB layer. If you know how to import these classlibraries in your own project, you can write an adapter class (pattern) that map the pear connection class methods on to your own application. In other words, by writing a simple adapter class, you do not need to reinvent the wheel. If you know how to take advantage of such prewritten code (API), your project gets more like component programmning. You put together components to make the complete structure. An adapter class is a special case of a more general concept, design pattern, Gamma et. al. (1995). Excellent examples of how to use patterns in PHP, is explained by Fuchs (2005) volume II chapter 7. This takes your OO PHP to a higher level. You get a good introduction to OO PHP if you download chapter 2 from volume I (free). That chapter should be read, read again and reread if you want to make effective OO PHP projects. In the end of that chapter, it is for example explained how you share interface by inheritance, how you instantiate an array of child objects that is used to output different messages dependent on which child object that is instanciated. This is a good example of polymorphism (flexible sharing) in practice.

Now you should have a solid background in OOP and can go on to the more advanced languages like Java, C# or C++ if you ever need them. The WebProWorld post mentioned above has an example of generic algorithms or the ability to paramtrice software (code) in C++. That is also possible in C# and once you understand generics, you are able to write very compact and effective code. Now that you have learned to go and walk, run to the next level with BETA and learn the power of distributed objects etc. in a minimalistic, very compact language.

Central litterature:

Kent Beck (2000): "Extreme programming explained" Addison-Wesley ISBN 0-201-61641-6

Gordon Blair, John Gallagher, David Hutchison and Doug Shephard (1991): "Object Oriented Languages, Systems and Applications." Pitman Publishing ISBN 0-273-03132-5

Daniel J. Duffy (2004): "Financial Instrument Pricing Using Cpp" ISBN 0470855096

Martin Fowler (1999): "Refactoring: Improving the Design of Existing Code" Addison-Wesley Professional ISBN 0201485672

Harry Fuecks (2005): The PHP Anthology Object Oriented PHP Solutions

Erich Gamma, Richard Helm, Ralph Johnson and John Vlissides (1995): "Design Patterns: Elements of Reusable Object-Oriented Software." Addison-Wesley Professional ISBN 0201633612

Anders Hejlsberg, Scott Wiltamuth and Peter Golde ( 2003): "The C# Programming Language" Addison Wesley Publishing Company ISBN 0321154916.

Andrew Koening and Barbara E. Moo ( 2000): "Accelerated C++ Prqactical Programming by Example" Addison Wesley Publishing Company ISBN 0-201-70353-X .

Mark Josi ( 2005): "Cpp Design Patterns and Derivatives Pricing" Cambridge University Press ISBN: 0521832357

Bjørn Kirkerud (1989): "Object Oriented Programming With Simula". Addison Wesley Publishing Company ISBN 0 201 17574 6

Craig Larman (2004): "Applying UML and patterns: An Introduction to Object-Oriented Analysis and Design and Iterative " Prentice Hall PTR ISBN 0131489062

Justin London ( 2004): "Modeling Derivatives in Cpp" Wiley ISBN 0471654647

Ole Lehrmann Madsen, Birger Møller-Pedersen and Kristen Nygaard ( 1993): "Object-Oriented Programming in the BETA programming language". Assn for Computing Machinery. ISBN 0201624303

Steven John Metsker (2004): "Design Patterns C# " Addison-Wesley Professional ISBN 0321126971

Robert Richards (2006) : "Pro PHP XML and Web Services" Apress ISBN: 1590596331

William Stamatakis (2006): ".NET Concurrency Design Patterns: Programming in C#" Addison-Wesley Professional ISBN 032116606X

Bjarne Strostrup (1994): "The Design and Evolution of C++" Addison-Wesley ISBN 0-201-54330-3

If you know Perl or PHP,  Java   may be the next step. I have som experience with Borland CPP Builder and it is an advanced tool.

Microsoft seem to foccus on their own plattform around ASP and Visual studio .

Privacy Policy | Company | Contact Us | Site of MultiFinansIT: Organization number 987 091 398 | © 2004 - 2014 MultiFinansIT | All rights Reserved |