Object Oriented Design Contest

V

virtualadepts

I have code here that explains my object oriented design model. I've
been reading about other design models from what is documented on
wikipedia about the key book on the subject: http://en.wikipedia.org/wiki/Design_patterns

All of the models look fun and interesting but they are very
specialized. I find myself writing bloated C++ code anyway, and not
finding a way to use the basic design models. So I've invented my
own. I call it recursive container design. The idea is to use a
container like a vector, or in my example a map, and do all of the
work within your container inside of the class. This keeps your code
very neat. It may seem redundant at first, but it keeps all of your
code organized in an easy to read and understand classes. This code
really reduced the size of my main function and created a neat little
class that directly relates to what I'm doing.

The only problem is that the code runs into problems after it is
compiled. The search_Name function in my program fails to lookup the
key pair for the data entered into the database. This is probably
because I've never worked with object oriented design before, and
haven't done anything with this particular container before either.

So if anyone is willing to fix up my code, I'll send you a free i-
pod! No one wanted to play my last contest, and I think this one is
more educational and far easier.

#include <utility>
#include <iostream>
#include <string>
#include <map>

using namespace std;

class Bookz : public map<string, string>
{

public:
Bookz() {
cout << "Welcome to the database. Enter information, and type 'end'
to stop."<< endl;
cout << "Name: ";
}
void add(string name, string number){
typedef pair <string, string> b_Pair;
insert( b_Pair(name, number) );
}
~Bookz(){}
void search_Name(string lookup_Num){
map <string, string> :: const_iterator b_Name;
b_Name = find(lookup_Num);
cout << b_Name -> second << "." << endl;
}
};

int main( void ) {
Bookz keeper;

string s="";
string n="";
while (s!="end" || n!="end"){
cin >> s;
if(s=="end"){cout <<"Finished inputing data."<<endl<<endl;
break;}
cout<<"Number: ";
cin >> n;
if(n=="end"){cout <<"Finished inputing data."<<endl<<endl;
break;}
keeper.add(s,n);
cout <<"Name: ";
}
cout << "To search the database enter a name or number. 'quit'
exists."<<endl;
while (s != "quit"){
cout<<"$ ";
cin >> s;
keeper.search_Name(s);
}

if (s == "quit")
cout<<"Goodbye."<<endl;;
}
 
P

PerfectReign

I have code here that explains my object oriented design model. I've
been reading about other design models from what is documented on
wikipedia about the key book on the subject:
http://en.wikipedia.org/wiki/Design_patterns

All of the models look fun and interesting but they are very
specialized. I find myself writing bloated C++ code anyway, and not
finding a way to use the basic design models. So I've invented my own.
I call it recursive container design. The idea is to use a container
like a vector, or in my example a map, and do all of the work within
your container inside of the class. This keeps your code very neat. It
may seem redundant at first, but it keeps all of your code organized in
an easy to read and understand classes. This code really reduced the
size of my main function and created a neat little class that directly
relates to what I'm doing.

The only problem is that the code runs into problems after it is
compiled. The search_Name function in my program fails to lookup the
key pair for the data entered into the database. This is probably
because I've never worked with object oriented design before, and
haven't done anything with this particular container before either.

So if anyone is willing to fix up my code, I'll send you a free i- pod!
No one wanted to play my last contest, and I think this one is more
educational and far easier.

#include <utility>
#include <iostream>
#include <string>
#include <map>

using namespace std;

class Bookz : public map<string, string> {

public:
Bookz() {
cout << "Welcome to the database. Enter information, and type 'end'
to stop."<< endl;
cout << "Name: ";
}
void add(string name, string number){
typedef pair <string, string> b_Pair; insert( b_Pair(name, number) );
}
~Bookz(){}
void search_Name(string lookup_Num){
map <string, string> :: const_iterator b_Name; b_Name =
find(lookup_Num);
cout << b_Name -> second << "." << endl;
}
};

int main( void ) {
Bookz keeper;

string s="";
string n="";
while (s!="end" || n!="end"){
cin >> s;
if(s=="end"){cout <<"Finished inputing data."<<endl<<endl;
break;}
cout<<"Number: ";
cin >> n;
if(n=="end"){cout <<"Finished inputing data."<<endl<<endl;
break;}
keeper.add(s,n);
cout <<"Name: ";
}
cout << "To search the database enter a name or number. 'quit'
exists."<<endl;
while (s != "quit"){
cout<<"$ ";
cin >> s;
keeper.search_Name(s);
}

if (s == "quit")
cout<<"Goodbye."<<endl;;
}

You're missing a goto in there, I think.

In any case, when you create a class - say books - then you want to have
two things: methods and properties.

You're gonna need a set of properties about the books and a whole
shitload of methods to call from whatever other class you have.

Also, you're confusing your books class with whatever presentation class
you should have. Please separate them.
 
V

virtualadepts

You're missing a goto in there, I think.

In any case, when you create a class - say books - then you want to have
two things: methods and properties.

You're gonna need a set of properties about the books and a whole
shitload of methods to call from whatever other class you have.

Also, you're confusing your books class with whatever presentation class
you should have. Please separate them.

I WIN! My Object Oriented Code FLYS LIKE A EAGLE!!! I found the bug,
and corrected it. All I needed to do is go back and re-read about the
error I was encountering. YAY!

#include <utility>
#include <iostream>
#include <string>
#include <map>

using namespace std;

class Bookz : public map<string, string>
{

public:
Bookz() {
cout << "Welcome to the database. Enter information, and type 'end'
to stop."<< endl;
cout << "Name: ";
}
void add(string name, string number){
typedef pair <string, string> b_Pair;
insert( b_Pair(name, number) );
}
~Bookz(){}
void search_Name(string lookup_Num){
cout << find(lookup_Num) -> second << "." << endl;
}
};

int main( void ) {
Bookz keeper;

string s="";
string n="";
while (s!="end" || n!="end"){
cin >> s;
if(s=="end"){cout <<"Finished inputing data."<<endl<<endl;
break;}
cout<<"Number: ";
cin >> n;
if(n=="end"){cout <<"Finished inputing data."<<endl<<endl;
break;}
keeper.add(s,n);
cout <<"Name: ";
}
cout << "To search the database enter a name or number. 'quit'
exists."<<endl;
while (s != "quit"){
cout<<"$ ";
cin >> s;
keeper.search_Name(s);
}

if (s == "quit")
cout<<"Goodbye."<<endl;;
}
 
S

SasQ

Dnia Sat, 31 Mar 2007 17:18:29 -0700, virtualadepts napisa³(a):
So if anyone is willing to fix up my code

Fix-up your brain at first.
And stop cross-posting [we've told you that already].
I'll send you a free i-pod!

Up to now, you're sending us a free spam only.
A LOTS of free spam!
So there is only one way out:

*PLONK!*

See you next life.....
 
A

ajk

#include <utility>
#include <iostream>
#include <string>
#include <map>

using namespace std;

class Bookz : public map<string, string>
{

public:
Bookz() {
cout << "Welcome to the database. Enter information, and type 'end'
to stop."<< endl;
cout << "Name: ";
}
void add(string name, string number){
typedef pair <string, string> b_Pair;
insert( b_Pair(name, number) );
}
~Bookz(){}
void search_Name(string lookup_Num){
map <string, string> :: const_iterator b_Name;
b_Name = find(lookup_Num);
cout << b_Name -> second << "." << endl;
}
};

int main( void ) {
Bookz keeper;

string s="";
string n="";
while (s!="end" || n!="end")
{
cin >> s;
if(s=="end")
{
cout <<"Finished inputing data."<<endl<<endl;
break;
}
cout<<"Number: ";
cin >> n;
if(n=="end")
{
cout <<"Finished inputing data."<<endl<<endl;
break;
}
keeper.add(s,n);
cout <<"Name: ";
}
cout << "To search the...r. 'quit' exists."<< endl;
while (s != "quit")
{
cout<<"$ ";
cin >> s;
keeper.search_Name(s);
}

if (s == "quit")
{
cout<<"Goodbye."<<endl;;
}
}

Why are you inheriting from the map template? it is better design to
add map<string,string> member variable in your class. then use
insert/find on that member variable

the map<> is used for hash tables but adding IO in it is not a good
design (if u don't add it for debugging purposes).

Always try to keep your design simple, if you derive from map<> and
adding all this cout's in your class you are not having a clean design
and the chances are that you will never be able reuse your class
as-is.


hth/ajk
 
B

boson boss

I WIN! My Object Oriented Code FLYS LIKE A EAGLE!!! I found the bug,
and corrected it. All I needed to do is go back and re-read about the
error I was encountering. YAY!

#include <utility>
#include <iostream>
#include <string>
#include <map>

using namespace std;

class Bookz : public map<string, string>
{

public:
Bookz() {
cout << "Welcome to the database. Enter information, and type 'end'
to stop."<< endl;
cout << "Name: ";
}
void add(string name, string number){
typedef pair <string, string> b_Pair;
insert( b_Pair(name, number) );
}
~Bookz(){}
void search_Name(string lookup_Num){
cout << find(lookup_Num) -> second << "." << endl;
}

};

int main( void ) {
Bookz keeper;

string s="";
string n="";
while (s!="end" || n!="end"){
cin >> s;
if(s=="end"){cout <<"Finished inputing data."<<endl<<endl;
break;}
cout<<"Number: ";
cin >> n;
if(n=="end"){cout <<"Finished inputing data."<<endl<<endl;
break;}
keeper.add(s,n);
cout <<"Name: ";
}
cout << "To search the database enter a name or number. 'quit'
exists."<<endl;
while (s != "quit"){
cout<<"$ ";
cin >> s;
keeper.search_Name(s);
}

if (s == "quit")
cout<<"Goodbye."<<endl;;
}



Can it be used as a new grep? Or giggle desktop search :)) Can
language process language?
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,262
Messages
2,571,059
Members
48,769
Latest member
Clifft

Latest Threads

Top