Sign in to follow this  

Good OOP Examples/Resources for C++ 11?

This topic is 1466 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Recommended Posts

Hi guys.

 

I have a question regarding C++. Its about good OOP design, i already know about Polymorphism,Encapsulation,Classes,Functions and etc.

 

However , i want to avoid spaghetti code. What tips or advice would you give me if i want to create clean and clutterless C++ code?

 

Would this be a good OOP code example ?

//File: Classes.h

class EXP_Variables 
{
public:
	int EXP;
};


class EXP_Gain : public EXP_Variables
{
public:
	int CalcEXP (int LV,int Rate)
	{
	EXP = LV * Rate;
	return (EXP);
	}; 
};


class Print_EXP : public EXP_Gain
{
public:
	int EXP_Print () 
	{
	cout << "Your Current Expierence is "<< EXP <<endl;
	return 0;
	}

}exprin;


// File: Main.cpp

int main ()
{
	exprin.CalcEXP(7,88);
	exprin.EXP_Print();

	system("pause");
	return 0;
};

Share this post


Link to post
Share on other sites

Further to the above comment (which was very good btw, I'm googling some of those terms right now) I'm not sure about your two public methods, neither need to return a value, so they should just be void (instead of int). 

Also you don't need to have return 0 in main, it's part of the standard that the compiler will do that for you.

Share this post


Link to post
Share on other sites

Thank you for your advice, i greatly appreciate it.

 

I think that i should have not rushed the code since i myself thought that the code was not good. I basically wanted to know more techniques used with OOP that are vital. Most of the stuff you guys have mentioned i already know, but before i design Object Oriented Classes, i always write it on paper to know what it is used for and what it includes. This is my first time just doing random code which turned out quite badly. 

 

What other principles should i study because i never heard of:

-Liskov Substitution Principle.

-Single Responsibility Principle.

-Composition vs Inheritance.

 

To be clear, I don't mean my prior comments to be harsh. Its clear you're still learning, and in the early stages the simple act of putting code together that actually compiles and does something useful is a small victory in itself. The fact that you're interested enough to try to do better and seek feedback is a good sign that you're on the right path.

It can sometimes be hard to ask for feedback when you suspect you might not be doing things the right way because it can leave you feeling a bit vulnerable. But if you're earnest, ask good questions, and show that you're listening, most everyone here is happy to help. Never be discouraged if someone doesn't have anything positive to say, its just constructive criticism.

Being Blunt is the best advice one can get and i wanted criticism on purpose so i know that i need to improve so thanks alot :).

Share this post


Link to post
Share on other sites

A great start is the SOLID object oriented principles from "objectmentor":

That said, learning good design is a practical skill, you need to get some experience building larger and larger programs to really feel the benefits and understand the costs of different approaches.

 

Two other skills interact with this. One is learning how to refactor code that is poorly designed and evolve it towards a better design. This means you don't have to get the design perfect up front, you can make mistakes, learn from them, and still make progress on your project. Another is learning to use version control, for much the same reasons (and many more).

This exactly why i also wanted to create a 3D game. It will improve my C++ OOP skills by noticing bad design and as you said, learning from those mistakes to improve the bad design into a better design. A 3D game is huge which makes it perfect for understanding OOP since a lot of the game will require it.

 

Thank's alot for the advice, it truly helps.

Share this post


Link to post
Share on other sites

This topic is 1466 days old which is more than the 365 day threshold we allow for new replies. Please post a new topic.

If you intended to correct an error in the post then please contact us.

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

Sign in to follow this