944,184 Members | Top Members by Rank

Ad:
  • C++ Discussion Thread
  • Unsolved
  • Views: 7351
  • C++ RSS
Jun 16th, 2005
0

Passing Class Objects, Instances

Expand Post »
Passing Class Objects, Instances

--------------------------------------------------------------------------------

I have a project creating a cartesian point, then a line segment, then a line comparison. Each has its own class .h and .cpp file. Main just starts the program to CartesianPoint test, in the point class. My question is after I create an instance of the point class and create a point, say P1, how can I then pass this object, (an instance of the point class) to the LineSegment class, to find slope and such. Line inherits LineSegment which inherits CartesianPoint. I have no idea what I'm doing.

Thanks


Heer's the code so far. I need help passing a CartesianPoint object to LineSegment, and I need help learning how to manipulate it. I believe this is called aggregation and/or composition, I have spent three days now just to find the terms of what I need to learn how to do. Instead of learning how to do it.
------------------------------------------------------

include <iostream>

#include "CartesianPoint.h"
#include "LineSegment.h"
#include "Line.h"

#include "stdafx.h"


using namespace std;




double main()
{


CartesianPoint::test();

LineSegment::test();


return (0);

} // end main

-----------------------------------------
#ifndef CARTESIANPOINT_H
#define CARTESIANPOINT_H


#include "stdafx.h"



class CartesianPoint {

public:


CartesianPoint();

CartesianPoint(double xx, double yy);

double getx();

double gety();

void set(double xx, double yy);

static void test();

void print();

//void print(double pOne, double pTwo, double pThree, double pFour);

virtual ~CartesianPoint();



protected:

double x;
double y;



}; // end clas CartesianPoint

#endif


--------------------------------------------
#include <iostream>
#include <iomanip>
#include <cmath>
#include "stdafx.h"

#include "CartesianPoint.h"
#include "LineSegment.h"
#include "Line.h"

using namespace std;





CartesianPoint::CartesianPoint()
{
x = 0;
y = 0;

}


CartesianPoint::CartesianPoint(double xx, double yy)
{
x = xx;
y = yy;

}


CartesianPoint p1;
CartesianPoint p2;
CartesianPoint p3;
CartesianPoint p4;



void CartesianPoint::test(){


p1.set(1.2,2.2);

p2.set(8.2,68.2);

p3.set(9.8,50.2);

p4.set(11.2,6.2);


p1.print();
p2.print();
p3.print();
p4.print();
p1.print();

}



void CartesianPoint::set(double xx,double yy)
{

x = xx;
y = yy;

}


double CartesianPoint::getx()
{
double temp;
temp = x;
return temp;
}



double CartesianPoint::gety()
{
double temp;
temp = y;
return temp;
}


void CartesianPoint::print()
{

cout<<"The point is: ("<<getx()<<", "<<gety()<<")"<<endl<<endl;

}



CartesianPoint::~CartesianPoint()
{

}


--------------------------------------------

#ifndef LINESEGMENT_H
#define LINESEGMENT_H

#include "CartesianPoint.h"
#include "Line.h"

class CartesianPoint;
//class Line;

class LineSegment : public CartesianPoint {

public:

LineSegment(); // default constructor

LineSegment(CartesianPoint V1, CartesianPoint V2);

LineSegment(CartesianPoint V1, CartesianPoint V2,
CartesianPoint V3, CartesianPoint V4);




double getMidPoint();

CartesianPoint midPoint();





double getPerpendicularBisector();

double perpendicularBisector();



double getSlope();

void printLine();

static void test();

virtual ~LineSegment();



protected:

double m;
double b;


CartesianPoint p1;
CartesianPoint p2;
CartesianPoint p3;
CartesianPoint p4;



// double m1;
// double m2;

// double slopeLine1;
// double slopeLine2;

// Cartesian X1;
// Cartesian X2;
// Cartesian Y1;
// Cartesian Y2;



}; // end clas LineSegment

#endif

---------------------------------------------------


#include <iostream>
#include <iomanip>
#include <cmath>
#include "stdafx.h"

#include "CartesianPoint.h"
#include "LineSegment.h"

using namespace std;



LineSegment::LineSegment()
{
m = 0;
b = 0;

}



LineSegment::LineSegment(CartesianPoint V1, CartesianPoint V2)
{

p1 = V1;
p2 = V2;

m = 0;
b = 0;

}



LineSegment::LineSegment(CartesianPoint V1, CartesianPoint V2,
CartesianPoint V3, CartesianPoint V4)
{
p1 = V1;
p2 = V2;
p3 = V3;
p4 = V4;

m = 0;
b = 0;

}
CartesianPoint p1;

// LineSegment L1(CartesianPoint(1,1), CartesianPoint(1,1);





void LineSegment::test()
{




}


double LineSegment::getSlope()
{
double temp;




temp = m;

return temp;
}





void LineSegment::printLine()
{


}





LineSegment::~LineSegment()
{

}






-----------------------------------------------------
Similar Threads
Reputation Points: 10
Solved Threads: 0
Newbie Poster
Robert G is offline Offline
3 posts
since Jun 2005
Jun 16th, 2005
0

Re: Passing Class Objects, Instances

> I have no idea what I'm doing.
Clearly. You have serious design problems by using inheritance instead of containment for this project. It's much simpler if CartesianPoint (aside from being more concisely named) is a self-contained class, then Line and LineSegment contain CartesianPoint (henceforth to be referred to as Point) objects:
C++ Syntax (Toggle Plain Text)
  1. class Point {
  2. int _x, _y;
  3. public:
  4. Point(int x, int y);
  5. void set(int x, int y);
  6. int getx() const;
  7. int gety() const;
  8. }
  9.  
  10. class Line {
  11. Point _start, _finish;
  12. public:
  13. Line(const Point& start, const Point& finish);
  14. void print() const;
  15. }
  16.  
  17. // etc...
Much easier, and more intuitive.
Reputation Points: 35
Solved Threads: 3
Posting Whiz in Training
Dogtree is offline Offline
232 posts
since May 2005
Jun 16th, 2005
0

Re: Passing Class Objects, Instances

Thanks for the help. Containment is the same as composition? I am going to read in a couple texts I have how to do this. Questions I have to answer are,can I create an instance of one class within or from another? Can I modify a previusly constructed object?

Thanks again.
Reputation Points: 10
Solved Threads: 0
Newbie Poster
Robert G is offline Offline
3 posts
since Jun 2005
Jun 16th, 2005
0

Re: Passing Class Objects, Instances

> Containment is the same as composition?
Yes.

> can I create an instance of one class within or from another?
Of course.

> Can I modify a previusly constructed object?
As long as it isn't const, sure.
Reputation Points: 35
Solved Threads: 3
Posting Whiz in Training
Dogtree is offline Offline
232 posts
since May 2005

This thread is more than three months old

No one has posted to this discussion for at least three months. Please let old threads die and do not reply to them unless you feel you have something new and valuable to contribute that absolutely must be added to make the discussion complete. Otherwise, please start a new thread in this forum instead.
Message:
Previous Thread in C++ Forum Timeline: Programming development, help needed!
Next Thread in C++ Forum Timeline: pixel scanning





About Us | Contact Us | Advertise | Acceptable Use Policy
Forum Index | Build Custom RSS Feed


Follow us on Twitter


© 2011 DaniWeb® LLC