object oriented programing
Sponsored Links
Sponsored Links
Secleted [ 0 ] software to compare
Results 1 - 15 of about 3369
The Object Oriented Database Kit 0.5.8.1
The Object Oriented Database Kit is a set of tools to help database applications developers to handle database communication. more>>
The Object Oriented Database Kit is a set of tools to help database applications developers to handle database communication, reporting, and printing. It has a solid, stable, and easy to use API. The project is also GUI toolkit agnostic and portable.
<<less Download (0.018MB)
Added: 2007-06-23 License: LGPL (GNU Lesser General Public License) Price:
860 downloads
Business Oriented Framework 0.07
Business Oriented Framework is a Perl application server. more>>
Business Oriented Framework (BOF) is a Perl application server. It uses SOAP, optionally secured with SSL, to communicate with the client.
The client can use SOAP::Lite or the client module included in BOF, making it easy to connect to the server. User, grou
Enhancements:
- Added support for Schedules and tasks
<<lessThe client can use SOAP::Lite or the client module included in BOF, making it easy to connect to the server. User, grou
Enhancements:
- Added support for Schedules and tasks
Download (0.016MB)
Added: 2005-07-05 License: Perl Artistic License Price:
1573 downloads
Object Relational Membrane 2a5
Object Relational Membrane is a Python package that provides the functionality of an object relational layer like EJB. more>>
Object Relational Membrane is a Python package that provides the functionality of an object relational layer like EJB or other persistence storage systems.
Object Relational Membrane is a thin compatibility layer between SQL table layouts and Object Oriented Python. While providing a good deal of functionality, it tries to be as small and simple as possible. It currently works with PostgreSQL and Gadfly.
Adapters for Firebird and MySQL are planed.
Enhancements:
- A number of small changes and enhancements.
- The last release previous to a "beta" release.
<<lessObject Relational Membrane is a thin compatibility layer between SQL table layouts and Object Oriented Python. While providing a good deal of functionality, it tries to be as small and simple as possible. It currently works with PostgreSQL and Gadfly.
Adapters for Firebird and MySQL are planed.
Enhancements:
- A number of small changes and enhancements.
- The last release previous to a "beta" release.
Download (0.17MB)
Added: 2007-01-23 License: GPL (GNU General Public License) Price:
1005 downloads
Php Object Generator 3.0
PHP Object Generator (POG) is a PHP code generator which generates clean and tested object oriented code for your PHP4/PHP5. more>>
Php Object Generator on short POG is an open source PHP code generator which automatically generates clean & tested Object Oriented code for your PHP4/PHP5 application.
Over the years, we realized that a large portion of a PHP programmers time is wasted on repetitive coding of the Database Access Layer of an application simply because different applications require different objects.
By generating PHP objects with integrated CRUD methods, POG gives you a head start in any project and saves you from writing and testing SQL queries. The time you save can be spent on more interesting areas of your project. But dont take our word for it, give it a try!
Main features:
- Generates clean & tested code
- Generates CRUD methods
- Compatible with PHP4 & PHP5
- Compatible with PDO
- Free for personal use
- Free for commercial use
- Open Source
Enhancements:
- POG now fetches result set arrays where possible (which provides a big performance boost).
- Data encoding is handled within the database.
- A new plugin interface is used.
- A data encoding sanity check was added to setup.
- Siblings can be deleted without deleting children.
- Getlist() accepts column names as filters.
- Getlist(), GetChild(), and GetSibling() return all results if no arguments are passed.
- A database wrapper class for PDO was added.
- The PDO performance was improved.
- The plugin API, POG base API, and database API were made uniform to prevent plugin versioning.
<<lessOver the years, we realized that a large portion of a PHP programmers time is wasted on repetitive coding of the Database Access Layer of an application simply because different applications require different objects.
By generating PHP objects with integrated CRUD methods, POG gives you a head start in any project and saves you from writing and testing SQL queries. The time you save can be spent on more interesting areas of your project. But dont take our word for it, give it a try!
Main features:
- Generates clean & tested code
- Generates CRUD methods
- Compatible with PHP4 & PHP5
- Compatible with PDO
- Free for personal use
- Free for commercial use
- Open Source
Enhancements:
- POG now fetches result set arrays where possible (which provides a big performance boost).
- Data encoding is handled within the database.
- A new plugin interface is used.
- A data encoding sanity check was added to setup.
- Siblings can be deleted without deleting children.
- Getlist() accepts column names as filters.
- Getlist(), GetChild(), and GetSibling() return all results if no arguments are passed.
- A database wrapper class for PDO was added.
- The PDO performance was improved.
- The plugin API, POG base API, and database API were made uniform to prevent plugin versioning.
Download (1.0MB)
Added: 2007-07-26 License: BSD License Price:
516 downloads
The Qu Programming Language 1.21.10
The Qu Programming Language is a full-featured object oriented programming language. more>>
Qu is a powerful full-featured object oriented programming language. It is an Open Source software. The Qu Programming Language is absolutely free (as in free lunch) and distributed under the GNU General Public License (GPL).
Qu is inspired by other languages. Most noticeably Perl, Python, Ruby and C. It mostly resembles Python except that the syntax is more flexible, the internals are simpler, and Qu allows you to use either indentation or non-indentation style.
Qu has a clean syntax designed to promote readability. There is no need for semi-colons and commas to separate items except in rare cases when the end of an expression is not obvious.
Qu is a procedural language. A program consist of statements and expressions evaluated in the order they appear.
Qu is a strong semi-dynamic (optional-static) typing language. Adding a number to a string will throw an exception. A variable can hold anything or you can attach a validator to it. Validators can be as simple as a class, a constant object (Array, Range, Struct, etc.) or even a validator function.
Arrays, dictionaries, and sets can be constrained to hold only a specific "type" of data as well.
Everything in Qu are objects, including numbers, strings, etc. The number 123, for example, is actually an instance of the builtin Int class. Classes are instances of the builtin Class class, etc. But this does not mean that you must write your programs in an object oriented manner. That is entirely up to you.
Documentation can be embedded in the source code. The compiler will skip them. The documentation builder will extract them. The builder is included as part of the standard distribution.
In fact, when you install Qu or Qu modules, the documentations are automatically built for you.
Qu is entirely written in C. Readable documentations are embedded in the C sources directly.
Writing C modules for Qu is as easy as it can get!
Main features:
- fast
- clean syntax
- strong semi-dynamic typing
- module management
- multithread
- deadlock detection
- label loops, break, continue, redo
- loop, while, for, atomic, do
- fast exceptions
- try, catch, else, finally
- nested function
- lexical closure
- accummulator
- generator
- coroutine
- type validator
- run once function
- full and safe eval
- buffered printing
- auto self
- private, public and static attributes
- read/write & read-only attributes
- class property and methods
- dynamic attribute access
- single inheritance with mixins
- multiple constructors
- super class attribute access
- finalizers
- multiple assignment
- variable and default arguments
- argument flattening
- uniform attribute access
- complex number
- big integer
- mark & sweep garbage collector
<<lessQu is inspired by other languages. Most noticeably Perl, Python, Ruby and C. It mostly resembles Python except that the syntax is more flexible, the internals are simpler, and Qu allows you to use either indentation or non-indentation style.
Qu has a clean syntax designed to promote readability. There is no need for semi-colons and commas to separate items except in rare cases when the end of an expression is not obvious.
Qu is a procedural language. A program consist of statements and expressions evaluated in the order they appear.
Qu is a strong semi-dynamic (optional-static) typing language. Adding a number to a string will throw an exception. A variable can hold anything or you can attach a validator to it. Validators can be as simple as a class, a constant object (Array, Range, Struct, etc.) or even a validator function.
Arrays, dictionaries, and sets can be constrained to hold only a specific "type" of data as well.
Everything in Qu are objects, including numbers, strings, etc. The number 123, for example, is actually an instance of the builtin Int class. Classes are instances of the builtin Class class, etc. But this does not mean that you must write your programs in an object oriented manner. That is entirely up to you.
Documentation can be embedded in the source code. The compiler will skip them. The documentation builder will extract them. The builder is included as part of the standard distribution.
In fact, when you install Qu or Qu modules, the documentations are automatically built for you.
Qu is entirely written in C. Readable documentations are embedded in the C sources directly.
Writing C modules for Qu is as easy as it can get!
Main features:
- fast
- clean syntax
- strong semi-dynamic typing
- module management
- multithread
- deadlock detection
- label loops, break, continue, redo
- loop, while, for, atomic, do
- fast exceptions
- try, catch, else, finally
- nested function
- lexical closure
- accummulator
- generator
- coroutine
- type validator
- run once function
- full and safe eval
- buffered printing
- auto self
- private, public and static attributes
- read/write & read-only attributes
- class property and methods
- dynamic attribute access
- single inheritance with mixins
- multiple constructors
- super class attribute access
- finalizers
- multiple assignment
- variable and default arguments
- argument flattening
- uniform attribute access
- complex number
- big integer
- mark & sweep garbage collector
Download (1.3MB)
Added: 2007-04-11 License: GPL (GNU General Public License) Price:
928 downloads
Luban programming language Beta 2.1
Luban is a component oriented scripting language. more>>
Luban is a component oriented scripting language. Luban is free and open source. Luban is named after a legendary ancient Chinese civil engineer and carpenter two thousand year ago whose constructions are still in use today.
The programming language spectrum seems crowded. Do we have all the tools we need? The author of Luban likes the scripting languages in general because of their usability. Though he always feels the pain for the lack of suitable component model for scripting.
And he personally considers object oriented scripting is too complicated for scripting purpose and will never compete with C++/Java. He eventually created Luban, a scripting language with a robust component model tailored for scripting purpose. Luban is an easy scripting language that is as clean and manageable as Java.
There have been numerous discussions about software component without clear definition. Lubans definition of component is property based object that is similar to Java Bean. User interacts with component by reading and writing property values, and computation could be triggered by the interactions.
The idea of Luban programming language that scripting language needs a different component model other than conventional class hierarchy to fit its scripting environment. A complete mechanism is built in Luban to define, save and categorize components, which is a fundamental feature of Luban.
Enhancements:
- This release adds the new feature to iterate through the elements in Java container objects.
- The following Java types can now be iterated in Luban: Java array, java.util.Collection, and java.util.Map.
<<lessThe programming language spectrum seems crowded. Do we have all the tools we need? The author of Luban likes the scripting languages in general because of their usability. Though he always feels the pain for the lack of suitable component model for scripting.
And he personally considers object oriented scripting is too complicated for scripting purpose and will never compete with C++/Java. He eventually created Luban, a scripting language with a robust component model tailored for scripting purpose. Luban is an easy scripting language that is as clean and manageable as Java.
There have been numerous discussions about software component without clear definition. Lubans definition of component is property based object that is similar to Java Bean. User interacts with component by reading and writing property values, and computation could be triggered by the interactions.
The idea of Luban programming language that scripting language needs a different component model other than conventional class hierarchy to fit its scripting environment. A complete mechanism is built in Luban to define, save and categorize components, which is a fundamental feature of Luban.
Enhancements:
- This release adds the new feature to iterate through the elements in Java container objects.
- The following Java types can now be iterated in Luban: Java array, java.util.Collection, and java.util.Map.
Download (0.37MB)
Added: 2006-04-20 License: Freely Distributable Price:
1283 downloads
Undisposable Clients 0.3
Undisposable Clients provides easy-to-use API kits for using Undisposable.org in various programming languages. more>>
Undisposable Clients project provides easy-to-use API kits for using Undisposable.org in various programming languages.
Main features:
- Protects site owners biggest assets; userbase and emails
- Prevents userbase contamination by fake accounts
- As critical as email validity check
- Stops people registering your services with disposable email accounts like jetable.org, pookmail
- Detects public accounts (spread from sites like bugmenot.com) and bans them
- Working principle is similar to spam blacklists like spamhaus.org; power of masses
- Totally free, your donations are welcome
How to use it
Check if there is an API kit for your programming language, if there isnt, connect to our servers manually.
Add a few extra lines to your email validation function which is called from your member registration page. The following is an example in PHP language:
..
function checkEmail($email) {
include_once("undorg/php/rest/undisposable.inc.php"); // include the API kit
if(!undorg_isDisposableEmail($email)) { // check if disposable email
.. // old procedures remain here
} // add this line to close the conditional statement
}
..
?>
Thats all. Very simple...
API kits:
PHP
Supports XML-RPC, REST and PHP serialiation. Stable
@TODO: make it object oriented, test PHP5
Python
Supports XML-RPC. Stable
@TODO: make it object oriented, more protocols
Perl
Supports XML-RPC. Beta
@TODO: test it, make it object oriented, more protocols
Java
Supports XML-RPC. Alpha
@TODO: test it, make it object oriented, more protocols
We need your support for clients in other languages.
Enhancements:
- The isValidEmail function was added for PHP and Python.
- Valid RFC and TLD checks are made in real time, as well blacklist queries against disposable email addressing and public accounts from sites similar to bugmenot.com.
<<lessMain features:
- Protects site owners biggest assets; userbase and emails
- Prevents userbase contamination by fake accounts
- As critical as email validity check
- Stops people registering your services with disposable email accounts like jetable.org, pookmail
- Detects public accounts (spread from sites like bugmenot.com) and bans them
- Working principle is similar to spam blacklists like spamhaus.org; power of masses
- Totally free, your donations are welcome
How to use it
Check if there is an API kit for your programming language, if there isnt, connect to our servers manually.
Add a few extra lines to your email validation function which is called from your member registration page. The following is an example in PHP language:
..
function checkEmail($email) {
include_once("undorg/php/rest/undisposable.inc.php"); // include the API kit
if(!undorg_isDisposableEmail($email)) { // check if disposable email
.. // old procedures remain here
} // add this line to close the conditional statement
}
..
?>
Thats all. Very simple...
API kits:
PHP
Supports XML-RPC, REST and PHP serialiation. Stable
@TODO: make it object oriented, test PHP5
Python
Supports XML-RPC. Stable
@TODO: make it object oriented, more protocols
Perl
Supports XML-RPC. Beta
@TODO: test it, make it object oriented, more protocols
Java
Supports XML-RPC. Alpha
@TODO: test it, make it object oriented, more protocols
We need your support for clients in other languages.
Enhancements:
- The isValidEmail function was added for PHP and Python.
- Valid RFC and TLD checks are made in real time, as well blacklist queries against disposable email addressing and public accounts from sites similar to bugmenot.com.
Download (0.004MB)
Added: 2007-01-23 License: MIT/X Consortium License Price:
1006 downloads
Keystone Application Framework 0.9.6
Keystone is a cross-platform, object oriented application framework. more>>
Keystone is a cross-platform, object oriented application framework which allows applications to be written to build on the target platforms of GNU/Linux and Win32 without modification of their source.
Keystone Application Framework implements several modern Web standards, including SVG graphics and the XUL user interface description language.
Enhancements:
- A significant development in this release is the optional use of the GDI+ (Win32) and CairoGraphics (Linux) rendering backends to render SVG content.
- In addition, support for SVG paths has been much improved with the ability to render bezier and elliptical segments.
<<lessKeystone Application Framework implements several modern Web standards, including SVG graphics and the XUL user interface description language.
Enhancements:
- A significant development in this release is the optional use of the GDI+ (Win32) and CairoGraphics (Linux) rendering backends to render SVG content.
- In addition, support for SVG paths has been much improved with the ability to render bezier and elliptical segments.
Download (0.74MB)
Added: 2006-04-26 License: LGPL (GNU Lesser General Public License) Price:
1276 downloads
Turtle3D 3.0
Turtle3D project is a scheme implementation of the Turtle, in 3D. more>>
Turtle3D project is a scheme implementation of the Turtle, in 3D.
It is object oriented, so you can have many turtles in the drawing window.
A test program is included.
<<lessIt is object oriented, so you can have many turtles in the drawing window.
A test program is included.
Download (0.015MB)
Added: 2006-11-01 License: GPL (GNU General Public License) Price:
1093 downloads
JDOInstruments 2.9.2
JDOInstruments is an embedded object oriented database programmed in java. more>>
JDOInstruments is an embedded object oriented database programmed in java, it is also an implementation of Suns Java Data Objects (JDO) specification for the transparent persistence of Java objects.
Because of this, it doesnt need a JDBC driver or a relational database. JDOInstruments uses its own object store thus it allows storage and retrieval of persistent data with little work from you.
It is integrated with Netbeans IDE (via Plugin module) allowing developers to build pure object-oriented systems.
It is free and Our license is GNU LGPL providing the code and executables (JARs) free of charge. You are free to use JDOInstruments in your projects.
Main features:
- Byte-Code Enhancement of classes
- Byte-Code Compatibility
- Datastore identity
- Optimistic Transaction
- Nontransactional Read
- Retain values
- Restore values
- Second Class PersistenceCapable objects
- J2EE Integration
- Query (JDOQL)
- Index
- Schema Evolution
<<lessBecause of this, it doesnt need a JDBC driver or a relational database. JDOInstruments uses its own object store thus it allows storage and retrieval of persistent data with little work from you.
It is integrated with Netbeans IDE (via Plugin module) allowing developers to build pure object-oriented systems.
It is free and Our license is GNU LGPL providing the code and executables (JARs) free of charge. You are free to use JDOInstruments in your projects.
Main features:
- Byte-Code Enhancement of classes
- Byte-Code Compatibility
- Datastore identity
- Optimistic Transaction
- Nontransactional Read
- Retain values
- Restore values
- Second Class PersistenceCapable objects
- J2EE Integration
- Query (JDOQL)
- Index
- Schema Evolution
Download (6.3MB)
Added: 2006-12-08 License: LGPL (GNU Lesser General Public License) Price:
1050 downloads
Algorithm::Permute 0.06
Algorithm::Permute is a Perl module with handy and fast permutation with object oriented interface. more>>
Algorithm::Permute is a Perl module with handy and fast permutation with object oriented interface.
SYNOPSIS
use Algorithm::Permute;
my $p = new Algorithm::Permute([a..d]);
while (@res = $p->next) {
print join(", ", @res), "n";
}
my @array = (1..9);
Algorithm::Permute::permute { print "@arrayn" } @array;
This handy module makes performing permutation in Perl easy and fast, although perhaps its algorithm is not the fastest on the earth. Currently it only supports permutation n of n objects.
No exported functions. This version is not backward compatible with the previous one, version 0.01. The old interface is no longer supported.
METHODS
new [@list]
Returns a permutor object for the given items.
next
Returns a list of the items in the next permutation. The order of the resulting permutation is the same as of the previous version of Algorithm::Permute.
peek
Returns the list of items which will be returned by next(), but doesnt advance the sequence. Could be useful if you wished to skip over just a few unwanted permutations.
reset
Resets the iterator to the start. May be used at any time, whether the entire set has been produced or not. Has no useful return value.
<<lessSYNOPSIS
use Algorithm::Permute;
my $p = new Algorithm::Permute([a..d]);
while (@res = $p->next) {
print join(", ", @res), "n";
}
my @array = (1..9);
Algorithm::Permute::permute { print "@arrayn" } @array;
This handy module makes performing permutation in Perl easy and fast, although perhaps its algorithm is not the fastest on the earth. Currently it only supports permutation n of n objects.
No exported functions. This version is not backward compatible with the previous one, version 0.01. The old interface is no longer supported.
METHODS
new [@list]
Returns a permutor object for the given items.
next
Returns a list of the items in the next permutation. The order of the resulting permutation is the same as of the previous version of Algorithm::Permute.
peek
Returns the list of items which will be returned by next(), but doesnt advance the sequence. Could be useful if you wished to skip over just a few unwanted permutations.
reset
Resets the iterator to the start. May be used at any time, whether the entire set has been produced or not. Has no useful return value.
Download (0.010MB)
Added: 2007-05-17 License: Perl Artistic License Price:
892 downloads
The Complex Language 0.1
The Complex Language project is an object oriented programming language intended for scripting or rapid apps prototyping. more>>
The Complex Language project is an object oriented programming language intended for scripting or rapid prototyping of applications.
The design goals were to have very few simple but powerful concepts and to be easy to use and easy to learn. The project provides a working interpreter along with a complete specification of the language.
Enhancements:
- This is the first release of the specification and the corresponding interpreter.
- The corresponding library is very poor, and there are probably still bugs in the interpreter.
<<lessThe design goals were to have very few simple but powerful concepts and to be easy to use and easy to learn. The project provides a working interpreter along with a complete specification of the language.
Enhancements:
- This is the first release of the specification and the corresponding interpreter.
- The corresponding library is very poor, and there are probably still bugs in the interpreter.
Download (0.13MB)
Added: 2007-07-02 License: GPL (GNU General Public License) Price:
844 downloads
FlexiRecord 1.0.6
FlexiRecord is a ruby library for object oriented access to databases. more>>
FlexiRecord is a ruby library for object oriented access to databases. Each table is represented by a class, each row of that table is represented by an object of that class.
This library is especially aimed to properly support database transactions. By now only PostgreSQL (version 8.2 or higher) is supported as a backend.
Please note that this is an alpha release. This means the library is incomplete and mostly untested yet. Use it at your own risk.
FlexiRecord is free for private and commercial use, no warranty, subject to the license agreement in the software.
Enhancements:
- Database connections in the connection pool are now re-established if they are broken.
<<lessThis library is especially aimed to properly support database transactions. By now only PostgreSQL (version 8.2 or higher) is supported as a backend.
Please note that this is an alpha release. This means the library is incomplete and mostly untested yet. Use it at your own risk.
FlexiRecord is free for private and commercial use, no warranty, subject to the license agreement in the software.
Enhancements:
- Database connections in the connection pool are now re-established if they are broken.
Download (0.022MB)
Added: 2007-04-18 License: MIT/X Consortium License Price:
924 downloads
Tree::Binary 0.07
Tree::Binary is a Object Oriented Binary Tree for Perl. more>>
Tree::Binary is a Object Oriented Binary Tree for Perl.
SYNOPSIS
use Tree::Binary;
# a tree representaion of the expression:
# ((2 + 2) * (4 + 5))
my $btree = Tree::Binary->new("*")
->setLeft(
Tree::Binary->new("+")
->setLeft(Tree::Binary->new("2"))
->setRight(Tree::Binary->new("2"))
)
->setRight(
Tree::Binary->new("+")
->setLeft(Tree::Binary->new("4"))
->setRight(Tree::Binary->new("5"))
);
# Or shown visually:
# +---(*)---+
# | |
# +-(+)-+ +-(+)-+
# | | | |
# (2) (2) (4) (5)
# get a InOrder visitor
my $visitor = Tree::Binary::Visitor::InOrderTraversal->new();
$btree->accept($visitor);
# print the expression in infix order
print $visitor->getAccumulation(); # prints "2 + 2 * 4 + 5"
# get a PreOrder visitor
my $visitor = Tree::Binary::Visitor::PreOrderTraversal->new();
$btree->accept($visitor);
# print the expression in prefix order
print $visitor->getAccumulation(); # prints "* + 2 2 + 4 5"
# get a PostOrder visitor
my $visitor = Tree::Binary::Visitor::PostOrderTraversal->new();
$btree->accept($visitor);
# print the expression in postfix order
print $visitor->getAccumulation(); # prints "2 2 + 4 5 + *"
# get a Breadth First visitor
my $visitor = Tree::Binary::Visitor::BreadthFirstTraversal->new();
$btree->accept($visitor);
# print the expression in breadth first order
print $visitor->getAccumulation(); # prints "* + + 2 2 4 5"
# be sure to clean up all circular references
$btree->DESTROY();
This module is a fully object oriented implementation of a binary tree. Binary trees are a specialized type of tree which has only two possible branches, a left branch and a right branch. While it is possible to use an n-ary tree, like Tree::Simple, to fill most of your binary tree needs, a true binary tree object is just easier to mantain and use.
Binary Tree objects are especially useful (to me anyway) when building parse trees of things like mathematical or boolean expressions. They can also be used in games for such things as descisions trees. Binary trees are a well studied data structure and there is a wealth of information on the web about them.
This module uses exceptions and a minimal Design By Contract style. All method arguments are required unless specified in the documentation, if a required argument is not defined an exception will usually be thrown. Many arguments are also required to be of a specific type, for instance the $tree argument to both the setLeft and setRight methods, must be a Tree::Binary object or an object derived from Tree::Binary, otherwise an exception is thrown. This may seems harsh to some, but this allows me to have the confidence that my code works as I intend, and for you to enjoy the same level of confidence when using this module. Note however that this module does not use any Exception or Error module, the exceptions are just strings thrown with die.
This object uses a number of methods copied from another module of mine, Tree::Simple. Users of that module will find many similar methods and behaviors. However, it did not make sense for Tree::Binary to be derived from Tree::Simple, as there are a number of methods in Tree::Simple that just wouldnt make sense in Tree::Binary. So, while I normally do not approve of cut-and-paste code reuse, it was what made the most sense in this case.
<<lessSYNOPSIS
use Tree::Binary;
# a tree representaion of the expression:
# ((2 + 2) * (4 + 5))
my $btree = Tree::Binary->new("*")
->setLeft(
Tree::Binary->new("+")
->setLeft(Tree::Binary->new("2"))
->setRight(Tree::Binary->new("2"))
)
->setRight(
Tree::Binary->new("+")
->setLeft(Tree::Binary->new("4"))
->setRight(Tree::Binary->new("5"))
);
# Or shown visually:
# +---(*)---+
# | |
# +-(+)-+ +-(+)-+
# | | | |
# (2) (2) (4) (5)
# get a InOrder visitor
my $visitor = Tree::Binary::Visitor::InOrderTraversal->new();
$btree->accept($visitor);
# print the expression in infix order
print $visitor->getAccumulation(); # prints "2 + 2 * 4 + 5"
# get a PreOrder visitor
my $visitor = Tree::Binary::Visitor::PreOrderTraversal->new();
$btree->accept($visitor);
# print the expression in prefix order
print $visitor->getAccumulation(); # prints "* + 2 2 + 4 5"
# get a PostOrder visitor
my $visitor = Tree::Binary::Visitor::PostOrderTraversal->new();
$btree->accept($visitor);
# print the expression in postfix order
print $visitor->getAccumulation(); # prints "2 2 + 4 5 + *"
# get a Breadth First visitor
my $visitor = Tree::Binary::Visitor::BreadthFirstTraversal->new();
$btree->accept($visitor);
# print the expression in breadth first order
print $visitor->getAccumulation(); # prints "* + + 2 2 4 5"
# be sure to clean up all circular references
$btree->DESTROY();
This module is a fully object oriented implementation of a binary tree. Binary trees are a specialized type of tree which has only two possible branches, a left branch and a right branch. While it is possible to use an n-ary tree, like Tree::Simple, to fill most of your binary tree needs, a true binary tree object is just easier to mantain and use.
Binary Tree objects are especially useful (to me anyway) when building parse trees of things like mathematical or boolean expressions. They can also be used in games for such things as descisions trees. Binary trees are a well studied data structure and there is a wealth of information on the web about them.
This module uses exceptions and a minimal Design By Contract style. All method arguments are required unless specified in the documentation, if a required argument is not defined an exception will usually be thrown. Many arguments are also required to be of a specific type, for instance the $tree argument to both the setLeft and setRight methods, must be a Tree::Binary object or an object derived from Tree::Binary, otherwise an exception is thrown. This may seems harsh to some, but this allows me to have the confidence that my code works as I intend, and for you to enjoy the same level of confidence when using this module. Note however that this module does not use any Exception or Error module, the exceptions are just strings thrown with die.
This object uses a number of methods copied from another module of mine, Tree::Simple. Users of that module will find many similar methods and behaviors. However, it did not make sense for Tree::Binary to be derived from Tree::Simple, as there are a number of methods in Tree::Simple that just wouldnt make sense in Tree::Binary. So, while I normally do not approve of cut-and-paste code reuse, it was what made the most sense in this case.
Download (0.027MB)
Added: 2006-10-14 License: Perl Artistic License Price:
1108 downloads
Simple C++ ODBC Database API 1.10
The SimpleDB API is a C++ API designed to encapsulate the ODBC API functionality in an object oriented manner. more>>
Simple C++ ODBC Database API is designed to encapsulate the ODBC API functionality in an object oriented manner.
The API was created due to an absence of any other such API that was database independent. The database independence is achieved using the ODBC (Open DataBase Connectivity) API.
The API provides a Database object that can be used to create instances of Query objects. The Query objects are used to query a database and allow columns to be bound for the query.
The flowing column objects are currently available (as of Jan 2005): a boolean column, a long column and a string column. The string column makes use of the libstdc++ string class so you dont have to mess around with malloc.
The Database object also has some convenience member functions that allow queries that return a single integer or string to be executed without having to create a query object or bind columns.
The API has been tested to work with both MySql and PostGreSQL on a Debian Linux platform.
Enhancements:
- DoubleColumn, IntColumn, and BigintColumn were added.
- The LongColumn is deprecated.
<<lessThe API was created due to an absence of any other such API that was database independent. The database independence is achieved using the ODBC (Open DataBase Connectivity) API.
The API provides a Database object that can be used to create instances of Query objects. The Query objects are used to query a database and allow columns to be bound for the query.
The flowing column objects are currently available (as of Jan 2005): a boolean column, a long column and a string column. The string column makes use of the libstdc++ string class so you dont have to mess around with malloc.
The Database object also has some convenience member functions that allow queries that return a single integer or string to be executed without having to create a query object or bind columns.
The API has been tested to work with both MySql and PostGreSQL on a Debian Linux platform.
Enhancements:
- DoubleColumn, IntColumn, and BigintColumn were added.
- The LongColumn is deprecated.
Download (0.083MB)
Added: 2006-07-16 License: LGPL (GNU Lesser General Public License) Price:
702 downloads
Secleted [ 0 ] software to compare
Copyright Notice:
Software piracy is theft, Using crack, password, serial numbers, registration codes, key generators is illegal and prevent future software development. The above object oriented programing search only lists software in full, demo and trial versions for free download. Download links are directly from our mirror sites or publisher sites, torrent files or links from rapidshare.com, yousendit.com or megaupload.com are not allowed