first commit

This commit is contained in:
2026-03-05 13:16:26 +01:00
commit 1b2bf174e8
164 changed files with 35594 additions and 0 deletions

106
Lab1/array.h Normal file
View File

@@ -0,0 +1,106 @@
//##################################################################
// LAB 1
// ADVANCED PROGRAMMING IN C++
// MATRIX/ARRAY WITH DEEP COPY
//==================================================================
// array.h
// CLASS IMPLEMENTATION AND DEFINITION FOR
// THE ARRAY
// Christian Ohlsson
// Daniel Alfredsson
// Karlstad 990907
//==================================================================
#include <iostream.h>
class Array {
private:
int size; //The size of the Array
int *buffer; //Pointer to an int-buffer
public:
~Array();
Array(const int s=0);
Array(const Array &src);
void operator = (const Array &src);
Array Array::operator +(const Array &src);
int &operator [] (int index) const;
int getSize() const;
};
//################################################################
// Constructor
// Creates a new Array
//================================================================
Array::Array(const int s=0) {
buffer = new int[s];
size= s;
}
//################################################################
// Constructor
// Copys an array
//================================================================
Array::Array(const Array &src) {
size = src.size;
buffer = new int[size];
for(int i=0 ; i<size ; i++)
buffer[i] = src.buffer[i];
}
//################################################################
// Operator overload
// Allows to assign a Array to another
//================================================================
void Array::operator = (const Array &src) {
delete [] buffer;
size = src.size;
buffer = new int[size];
for(int i=0 ; i<size ; i++)
buffer[i] = src.buffer[i];
}
//################################################################
// Operator overload
// Returns a element in the Array
//================================================================
int &Array::operator [] (int index) const{
return buffer[index];
}
//################################################################
// Operator overload
// Allows to add a Array to another
//================================================================
Array Array::operator + (const Array &src) {
Array tmp(size);
for(int i=0 ; i<size ; i++)
tmp.buffer[i] = buffer[i] + src.buffer[i];
return (tmp);
}
//################################################################
// Destructor
// Deallocates memory, used by the Array
//================================================================
Array::~Array() {
delete [] buffer;
}
//################################################################
// Operator overload
// Allows input in the Array, using STDIN
//================================================================
istream &operator >> (istream &is, Array &v) {
for(int l=0 ; l<v.getSize() ; l++)
is >> v[l];
return is;
}
//################################################################
// Operator overload
// Prints out an Array, using STDOUT
//================================================================
ostream &operator << (ostream &os, const Array &v) {
for(int k=0 ; k<v.getSize() ; k++)
os << v[k];
return os;
}
//################################################################
// Function getSize()
// Returns the size of the Array
//================================================================
int Array::getSize() const{
return size;
}

BIN
Lab1/lab_one Normal file

Binary file not shown.

16
Lab1/matrix.cpp Normal file
View File

@@ -0,0 +1,16 @@
//matrix.cpp
#include "matrix.h"
int main() {
Array a (2);
Matrix b (2,2);
cout << "input Array: " << endl;
cin>>a;
cout << "input Matrix: " << endl;
cin >>b;
//b[2] = a;
b[1] = a + b[1];
Matrix c(b);
b[1][1] = a[1];
cout << "c:\n" <<c << "a:\n"<< a << "\nb:\n" << b;
return 0;
}

111
Lab1/matrix.h Normal file
View File

@@ -0,0 +1,111 @@
//##################################################################
// LAB 1
// ADVANCED PROGRAMMING IN C++
// MATRIX/ARRAY WITH DEEP COPY
//==================================================================
// matrix.h
// CLASS IMPLEMENTATION AND DEFINITION FOR
// THE MATRIX
// Christian Ohlsson
// Daniel Alfredsson
// Karlstad 990907
//==================================================================
#include "array.h"
class Matrix {
private:
int cols, rows; //# of cols and rows in the matrix
Array *myMatrix; //Array-pointer to our matrix
public:
void Matrix::operator = (const Matrix &src);
int getCols() const { return cols;};
int getRows() const { return rows;};
Array &Matrix::operator [] (int index) const;
Matrix(const Matrix &src);
Matrix(int cols, int rows);
~Matrix();
};
//################################################################
// Constructor
// Creates a new Matrix with 'c' columns and 'r' rows
//================================================================
Matrix::Matrix(int c, int r) {
myMatrix = new Array[r];
for(int i=0; i < c; i++)
myMatrix[i] = Array(c);
cols = c;
rows = r;
}
//################################################################
// Constructor
// Creates a new copy of a Matrix
//================================================================
Matrix::Matrix(const Matrix &src) {
cols = src.cols;
rows = src.rows;
int i,j;
myMatrix = new Array[rows];
for(i=0; i < cols; i++)
myMatrix[i] = Array(cols);
for(i=0 ; i < cols ; i++)
for(j=0 ; j < rows ; j++)
myMatrix[i][j] = src.myMatrix[i][j];
}
//################################################################
// Destructor
// De-allocates memory for a Matrix
//================================================================
Matrix::~Matrix() {
delete [] myMatrix;
}
//################################################################
// Operator overload
// Sets one Matrix equal to another
//================================================================
void Matrix::operator = (const Matrix &src) {
delete [] myMatrix;
cols = src.cols;
rows = src.rows;
myMatrix = new Array[rows];
for(int i=0 ; i<cols ; i++)
for(int j=0 ; j<rows ; j++)
myMatrix[i][j] = src.myMatrix[i][j];
}//################################################################
// Operator overload
// Reyurns a row in a Matrix, and checks for bad indexes.
//================================================================
Array &Matrix::operator [] (int index) const {
if(index>=rows || index<0) {
cout <<"\nIndex out of bounds! Quitting...\n";
exit(0);
}
else
return myMatrix[index];
}
//################################################################
// Operator overload
// Allow inserts in a Matrix, using STDIN
//================================================================
istream &operator >> (istream &is, Matrix &v) {
int i,j;
for(i=0 ; i<v.getCols() ; i++)
for (j=0 ; j<v.getRows() ; j++)
is >> v[i][j];
return is;
}
//################################################################
// Operator overload
// Prints the Matrix on the screen, using STDUOT
//================================================================
ostream &operator << (ostream &os, const Matrix &v) {
int i,j;
for(i=0 ; i < v.getCols() ; i++)
for(j=0 ; j < v.getRows() ; j++)
os << i << "," << j<< " = " << v[i][j] << "\n";
return os;
}

12
Lab1/read_me Normal file
View File

@@ -0,0 +1,12 @@
Avancerad programmering i C++
==========================================
Denna lab skapades under Linux med
kommandot:
g++ -Wall -o lab_one *.cpp

130
Lab2/array.h Normal file
View File

@@ -0,0 +1,130 @@
//##################################################################
// LAB 2
// ADVANCED PROGRAMMING IN C++
// MATRIX/ARRAY WITH SHALLOW COPY
//==================================================================
// array.h
// CLASS IMPLEMENTATION AND DEFINITION FOR
// THE ARRAY
// Christian Ohlsson
// Daniel Alfredsson
// Karlstad 990907
//==================================================================
#include <iostream.h>
#include "contract.h"
class Array {
private:
Contract *myContract;
public:
~Array();
Array(const int s=0);
Array(const Array &src);
const Array operator + (const Array &src);
void operator = (const Array &src);
const int &operator [] (int index) const;
int &operator [] (int index);
int getSize() const;
};
//################################################################
// Constructor
// Creates a new Array
//================================================================
Array::Array(const int s) {
myContract = new Contract();
myContract->size = s;
myContract->buffer = new int[s];
}
//################################################################
// Constructor
// Copys an array
//================================================================
Array::Array(const Array &src) {
src.myContract->owners++;
myContract = src.myContract;
}
//################################################################
// Operator overload
// Allows to assign a Array to another
//================================================================
void Array::operator = (const Array &src) {
if(myContract->owners>1) {
myContract->owners--;
myContract = new Contract;
}
else
delete [] myContract->buffer;
myContract->size = src.myContract->size;
myContract->buffer = new int[src.myContract->size];
for(int i=0 ; i<src.myContract->size ; i++)
myContract->buffer[i] = src.myContract->buffer[i];
}
//################################################################
// Operator overload
// Returns a element in the Array
//================================================================
const int &Array::operator [] (int index) const{
return (myContract->buffer[index]);
}
//################################################################
// Operator overload
// Returns a element in the Array
//================================================================
int &Array::operator [] (int index) {
if(myContract->owners>1) {
myContract->owners--;
Contract *tmp = new Contract;
tmp->size = myContract->size;
tmp->buffer = new int[tmp->size];
for(int i=0 ; i<tmp->size ; i++)
tmp->buffer[i] = myContract->buffer[i];
}
return (myContract->buffer[index]);
}
//################################################################
// Operator overload
// Allows to add a Array to another
//================================================================
const Array Array::operator + (const Array &src) {
Array tmp(myContract->size);
for(int i=0 ; i<myContract->size ; i++)
tmp.myContract->buffer[i] = myContract->buffer[i] + src.myContract->buffer[i];
return (tmp);
}
//################################################################
// Destructor
// Deallocates memory, used by the Array
//================================================================
Array::~Array() {
myContract->owners--;
if(myContract->owners == 0) {
delete [] myContract->buffer;
delete myContract;
}
}
//################################################################
// Operator overload
// Allows input in the Array, using STDIN
//================================================================
istream &operator >> (istream &is, Array &a) {
for(int l=0 ; l<a.getSize() ; l++)
is >> a[l];
return is;
}
//################################################################
// Operator overload
// Prints out an Array, using STDOUT
//================================================================
ostream &operator << (ostream &os, const Array &a) {
for(int k=0 ; k<a.getSize() ; k++)
os << a[k];
return os;
}
//################################################################
// Function getSize()
// Returns the size of the Array
//================================================================
int Array::getSize() const{
return myContract->size;
}

26
Lab2/contract.h Normal file
View File

@@ -0,0 +1,26 @@
//##################################################################
// LAB 2
// ADVANCED PROGRAMMING IN C++
// MATRIX/ARRAY WITH SHALLOW COPY
//==================================================================
// contract.h
// CLASS IMPLEMENTATION AND DEFINITION FOR
// THE CONTRACT
// Christian Ohlsson
// Daniel Alfredsson
// Karlstad 990907
//==================================================================
class Contract {
public:
int *buffer;
int size;
int owners;
Contract() {
size=0;

BIN
Lab2/lab_two Normal file

Binary file not shown.

16
Lab2/matrix.cpp Normal file
View File

@@ -0,0 +1,16 @@
//matrix.cpp
#include "matrix.h"
int main() {
Array a (2);
Matrix b (2,2);
cout << "input Array: " << endl;
cin>>a;
cout << "input Matrix: " << endl;
cin >>b;
//b[2] = a;
b[1] = a + b[1];
Matrix c(b);
b[1][1] = a[1];
cout << "c:\n" <<c << "a:\n"<< a << "\nb:\n" << b;
return 0;
}

110
Lab2/matrix.h Normal file
View File

@@ -0,0 +1,110 @@
//##################################################################
// LAB 1
// ADVANCED PROGRAMMING IN C++
// MATRIX/ARRAY WITH DEEP COPY
//==================================================================
// matrix.h
// CLASS IMPLEMENTATION AND DEFINITION FOR
// THE MATRIX
// Christian Ohlsson
// Daniel Alfredsson
// Karlstad 990907
//==================================================================
#include <stdlib.h>
#include "array.h"
class Matrix {
private:
int cols, rows; //# of cols and rows in the matrix
Array *myMatrix; //Array-pointer to our matrix
public:
void Matrix::operator = (const Matrix &src);
int getCols() const { return cols;};
int getRows() const { return rows;};
Array &Matrix::operator [] (int index) const;
Matrix(const Matrix &src);
Matrix(int cols, int rows);
~Matrix();
};
//################################################################
// Constructor
// Creates a new Matrix with 'c' columns and 'r' rows
//================================================================
Matrix::Matrix(int c, int r) {
myMatrix = new Array[r];
for(int i=0; i < c; i++)
myMatrix[i] = Array(c);
cols = c;
rows = r;
}
//################################################################
// Constructor
// Creates a new copy of a Matrix
//================================================================
Matrix::Matrix(const Matrix &src) {
cols = src.cols;
rows = src.rows;
int i,j;
myMatrix = new Array[rows];
for(i=0; i < cols; i++)
myMatrix[i] = Array(cols);
for(i=0 ; i < cols ; i++)
for(j=0 ; j < rows ; j++)
myMatrix[i][j] = src.myMatrix[i][j];
}
//################################################################
// Destructor
// De-allocates memory for a Matrix
//================================================================
Matrix::~Matrix() {
delete [] myMatrix;
}
//################################################################
// Operator overload
// Sets one Matrix equal to another
//================================================================
void Matrix::operator = (const Matrix &src) {
delete [] myMatrix;
cols = src.cols;
rows = src.rows;
myMatrix = new Array[rows];
for(int i=0 ; i<cols ; i++)
for(int j=0 ; j<rows ; j++)
myMatrix[i][j] = src.myMatrix[i][j];
}//################################################################
// Operator overload
// Reyurns a row in a Matrix, and checks for bad indexes.
//================================================================
Array &Matrix::operator [] (int index) const {
if(index>=rows || index<0) {
cout <<"\nIndex out of bounds! Quitting...\n";
exit(0);
}
return myMatrix[index];
}
//################################################################
// Operator overload
// Allow inserts in a Matrix, using STDIN
//================================================================
istream &operator >> (istream &is, Matrix &v) {
int i,j;
for(i=0 ; i<v.getCols() ; i++)
for (j=0 ; j<v.getRows() ; j++)
is >> v[i][j];
return is;
}
//################################################################
// Operator overload
// Prints the Matrix on the screen, using STDUOT
//================================================================
ostream &operator << (ostream &os, const Matrix &v) {
int i,j;
for(i=0 ; i < v.getCols() ; i++)
for(j=0 ; j < v.getRows() ; j++)
os << i << "," << j<< " = " << v[i][j] << "\n";
return os;
}

13
Lab2/read_me Normal file
View File

@@ -0,0 +1,13 @@
Avancerad programmering i C++
==========================================
Denna lab skapades under Linux med
kommandot:
g++ -Wall -o lab_two *.cpp

15
Lab3/atm.h Normal file
View File

@@ -0,0 +1,15 @@
//atm.h
#ifndef __ATM_H__
#define __ATM_H__
#include <stdlib.h>
#include "cashcard.h"
class ATM {
public:
double withDraw(Cashcard &myCard, double money) {

14
Lab3/bank.cpp Normal file
View File

@@ -0,0 +1,14 @@
//bank.cpp
#ifndef __BANK_CPP__
#define __BANK_CPP__
#include "person.h"
#include "bank.h"
Cashcard* Bank::makeCashcard(Passport &P) {
if(&P) {

16
Lab3/bank.h Normal file
View File

@@ -0,0 +1,16 @@
//bank.h
#ifndef __BANK_H__
#define __BANK_H__
#include "passport.h"
#include "person.h"
class Bank {
public:
Bank(){}

19
Lab3/cashcard.h Normal file
View File

@@ -0,0 +1,19 @@
//cashcard.h
#ifndef __CASHCARD_H__
#define __CASHCARD_H__
#include "name.h"
class ATM;
class Bank;
class Cashcard {
friend ATM;
friend Bank;
private:

17
Lab3/main.cpp Normal file
View File

@@ -0,0 +1,17 @@
//main.cpp
#include "person.h"
void main() {
Person myPerson(Name("Kalle !"), 20);
Police myStation;
Bank myBank;
ATM myATM;
if(myPerson.getPassport(myStation)) //Person gets a passport

49
Lab3/name.cpp Normal file
View File

@@ -0,0 +1,49 @@
//name.cpp
#ifndef __NAME_CPP__
#define __NAME_CPP__
#include <iostream.h>
#include <string.h>
#include <stdlib.h>
#include "name.h"
//##################################################
// Name
// Puts name into a buffer
//==================================================
Name::Name(char *txt) {
buff = new char[strlen(txt) + 1];
strcpy(buff, txt);
}
//##################################################
// Destructor
// Delets buffer
//==================================================
Name::~Name() {
delete [] buff;
}
//##################################################
// Operator overload
// Deletes buffer and makes a new one

14
Lab3/name.h Normal file
View File

@@ -0,0 +1,14 @@
//name.h
#ifndef __NAME_H__
#define __NAME_H__
class Name {
private:
char* buff;
public:

14
Lab3/passport.h Normal file
View File

@@ -0,0 +1,14 @@
//passport.h
#ifndef __PASSPORT_H__
#define __PASSPORT_H__
#include "name.h"
class Passport {
private:
Name myName; //The name in the passport

54
Lab3/person.h Normal file
View File

@@ -0,0 +1,54 @@
//person.h
#ifndef __PERSON_H__
#define __PERSON_H__
#include "police.h"
#include "atm.h"
#include "cashcard.h"
#include "bank.h"
#include <stdlib.h>
class Person {
private:
Name myName;
int myAge;
double cash;
Passport *myPass;
Cashcard *myCard;
public:
Person(Name &N, int &age):myName(N) { //Constructor
myPass=NULL;
myCard=NULL;
cash=0;
myAge=age;
}
~Person(){}
const Name &getName() { return myName; }
int getPassport(Police &myStation) {

11
Lab3/police.cpp Normal file
View File

@@ -0,0 +1,11 @@
//police.cpp
#ifndef __POLICE_CPP__
#define __POLICE_CPP__
#include "person.h"
#include "police.h"
Passport* Police::makePassport(Person &P) {

14
Lab3/police.h Normal file
View File

@@ -0,0 +1,14 @@
//police.h
#ifndef __POLICE_H__
#define __POLICE_H__
#include "passport.h"
#include "person.h"
class Person;
class Police {

13
Lab3/read_me Normal file
View File

@@ -0,0 +1,13 @@
Avancerad programmering i C++
==========================================
Denna lab skapades med Borland C++ 5.0
Lägg alla .cpp i projektet.
Kompilera för EasyWin.

7079
Lab4/RoseModel.mdl Normal file

File diff suppressed because it is too large Load Diff

106
Lab4/circle.cpp Normal file
View File

@@ -0,0 +1,106 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: Circle; Pseudo Package body
//## Subsystem: Figures
//## Source file: H:\WebDocs\skola\Avancerad_C++\Lab4\Rose\Circle.cpp
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes
//## end module.includes
// Circle
#include "H:\WebDocs\skola\Avancerad_C++\Lab4\Rose\Circle.h"
//## begin module.additionalDeclarations preserve=yes
//## end module.additionalDeclarations
// Class Circle
Circle::Circle()
//## begin Circle::Circle%.hasinit preserve=no
//## end Circle::Circle%.hasinit
//## begin Circle::Circle%.initialization preserve=yes
//## end Circle::Circle%.initialization
{
//## begin Circle::Circle%.body preserve=yes
//## end Circle::Circle%.body
}
Circle::Circle (int x, int y, int r, Color color)
//## begin Circle::Circle%939623931.hasinit preserve=no
//## end Circle::Circle%939623931.hasinit
//## begin Circle::Circle%939623931.initialization preserve=yes
//## end Circle::Circle%939623931.initialization
{
//## begin Circle::Circle%939623931.body preserve=yes
setColor(color);
center.setx(x);
center.sety(y);
radius=r;
//## end Circle::Circle%939623931.body
}
Circle::~Circle()

108
Lab4/circle.h Normal file
View File

@@ -0,0 +1,108 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: Circle; Pseudo Package specification
//## Subsystem: Figures
//## Source file: H:\WebDocs\skola\Avancerad_C++\Lab4\Rose\Circle.h
#ifndef Circle_h
#define Circle_h 1
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes
//## end module.includes
// Point
#include "H:\WebDocs\skola\Avancerad_C++\Lab4\Rose\Point.h"
// Figure
#include "H:\WebDocs\skola\Avancerad_C++\Lab4\Rose\Figure.h"
//## begin module.additionalDeclarations preserve=yes
//## end module.additionalDeclarations
//## Class: Circle
//## Category: Figures
//## Subsystem: Figures
//## Persistence: Transient
//## Cardinality/Multiplicity: n
class Circle : public Figure //## Inherits: <unnamed>
{
//## begin Circle.initialDeclarations preserve=yes
//## end Circle.initialDeclarations
public:
//## Constructors (generated)
Circle();
//## Constructors (specified)
//## Operation: Circle%939623931
Circle (int x, int y, int r, Color color);
//## Destructor (generated)
~Circle();
//## Other Operations (specified)
//## Operation: draw%937398670
void draw (Graphics &g);

87
Lab4/cmplxfgr.cpp Normal file
View File

@@ -0,0 +1,87 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: ComplexFigure; Pseudo Package body
//## Subsystem: Figures
//## Source file: H:\WebDocs\skola\Avancerad_C++\Lab4\Rose\CmplxFgr.cpp
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes
//## end module.includes
// ComplexFigure
#include "H:\WebDocs\skola\Avancerad_C++\Lab4\Rose\CmplxFgr.h"
//## begin module.additionalDeclarations preserve=yes
#include "H:\WebDocs\skola\Avancerad_C++\Lab4\Rose\Graphic\Graphics.h"
//## end module.additionalDeclarations
// Class ComplexFigure
ComplexFigure::ComplexFigure()
//## begin ComplexFigure::ComplexFigure%.hasinit preserve=no
//## end ComplexFigure::ComplexFigure%.hasinit
//## begin ComplexFigure::ComplexFigure%.initialization preserve=yes
//## end ComplexFigure::ComplexFigure%.initialization
{
//## begin ComplexFigure::ComplexFigure%.body preserve=yes
//## end ComplexFigure::ComplexFigure%.body
}
ComplexFigure::~ComplexFigure()
{
//## begin ComplexFigure::~ComplexFigure%.body preserve=yes
//## end ComplexFigure::~ComplexFigure%.body
}

100
Lab4/cmplxfgr.h Normal file
View File

@@ -0,0 +1,100 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: ComplexFigure; Pseudo Package specification
//## Subsystem: Figures
//## Source file: H:\WebDocs\skola\Avancerad_C++\Lab4\Rose\CmplxFgr.h
#ifndef CmplxFgr_h
#define CmplxFgr_h 1
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes
//## end module.includes
// Figure
#include "H:\WebDocs\skola\Avancerad_C++\Lab4\Rose\Figure.h"
// FList
#include "H:\WebDocs\skola\Avancerad_C++\Lab4\Rose\FList.h"
//## begin module.additionalDeclarations preserve=yes
//## end module.additionalDeclarations
//## Class: ComplexFigure
//## Category: Figures
//## Subsystem: Figures
//## Persistence: Transient
//## Cardinality/Multiplicity: n
class ComplexFigure : public Figure //## Inherits: <unnamed>
{
//## begin ComplexFigure.initialDeclarations preserve=yes
//## end ComplexFigure.initialDeclarations
public:
//## Constructors (generated)
ComplexFigure();
//## Destructor (generated)
~ComplexFigure();
//## Other Operations (specified)
//## Operation: draw%939104770
void draw (Graphics &g);

61
Lab4/fgrhlder.cpp Normal file
View File

@@ -0,0 +1,61 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: FigureHolder; Pseudo Package body
//## Subsystem: Figures
//## Source file: H:\WebDocs\skola\Avancerad_C++\Lab4\Rose\FgrHlder.cpp
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes
//## end module.includes
// FigureHolder
#include "H:\WebDocs\skola\Avancerad_C++\Lab4\Rose\FgrHlder.h"
//## begin module.additionalDeclarations preserve=yes
//## end module.additionalDeclarations
// Class FigureHolder
FigureHolder::FigureHolder()
//## begin FigureHolder::FigureHolder%.hasinit preserve=no
//## end FigureHolder::FigureHolder%.hasinit
//## begin FigureHolder::FigureHolder%.initialization preserve=yes
//## end FigureHolder::FigureHolder%.initialization

94
Lab4/fgrhlder.h Normal file
View File

@@ -0,0 +1,94 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: FigureHolder; Pseudo Package specification
//## Subsystem: Figures
//## Source file: H:\WebDocs\skola\Avancerad_C++\Lab4\Rose\FgrHlder.h
#ifndef FgrHlder_h
#define FgrHlder_h 1
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes
//## end module.includes
// Figure
#include "H:\WebDocs\skola\Avancerad_C++\Lab4\Rose\Figure.h"
//## begin module.additionalDeclarations preserve=yes
//## end module.additionalDeclarations
//## Class: FigureHolder
//## Category: Figures
//## Subsystem: Figures
//## Persistence: Transient
//## Cardinality/Multiplicity: n
class FigureHolder
{
//## begin FigureHolder.initialDeclarations preserve=yes
public:
FigureHolder(Figure& f)
{
myFigure = f.clone();
}
//## end FigureHolder.initialDeclarations
public:
//## Constructors (generated)
FigureHolder();
//## Destructor (generated)

68
Lab4/figure.cpp Normal file
View File

@@ -0,0 +1,68 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: Figure; Pseudo Package body
//## Subsystem: Figures
//## Source file: H:\WebDocs\skola\Avancerad_C++\Lab4\Rose\Figure.cpp
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes
//## end module.includes
// Figure
#include "H:\WebDocs\skola\Avancerad_C++\Lab4\Rose\Figure.h"
//## begin module.additionalDeclarations preserve=yes
//## end module.additionalDeclarations
// Class Figure
Figure::Figure()
//## begin Figure::Figure%.hasinit preserve=no
//## end Figure::Figure%.hasinit
//## begin Figure::Figure%.initialization preserve=yes
//## end Figure::Figure%.initialization
{
//## begin Figure::Figure%.body preserve=yes
//## end Figure::Figure%.body

103
Lab4/figure.h Normal file
View File

@@ -0,0 +1,103 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: Figure; Pseudo Package specification
//## Subsystem: Figures
//## Source file: H:\WebDocs\skola\Avancerad_C++\Lab4\Rose\Figure.h
#ifndef Figure_h
#define Figure_h 1
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes
//## end module.includes
// Graphics
#include "Graphic\Graphics.h"
//## begin module.additionalDeclarations preserve=yes
//## end module.additionalDeclarations
//## Class: Figure; Abstract
//## Category: Figures
//## Subsystem: Figures
//## Persistence: Transient
//## Cardinality/Multiplicity: n
//## Uses: <unnamed>; Graphics { -> }
class Figure
{
//## begin Figure.initialDeclarations preserve=yes
//## end Figure.initialDeclarations
public:
//## Constructors (generated)
Figure();
//## Destructor (generated)
~Figure();
//## Other Operations (specified)
//## Operation: draw%937398679
virtual void draw (Graphics &g) = 0;
//## Operation: erase%937398680

30
Lab4/flist.cpp Normal file
View File

@@ -0,0 +1,30 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: FList; Pseudo Package body
//## Subsystem: Figures
//## Source file: H:\WebDocs\skola\Avancerad_C++\Lab4\Rose\FList.cpp
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes

48
Lab4/flist.h Normal file
View File

@@ -0,0 +1,48 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: FList; Pseudo Package specification
//## Subsystem: Figures
//## Source file: H:\WebDocs\skola\Avancerad_C++\Lab4\Rose\FList.h
#ifndef FList_h
#define FList_h 1
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes
//## end module.includes
// List
#include "H:\WebDocs\skola\Avancerad_C++\Lab4\Rose\List.h"
// FigureHolder
#include "H:\WebDocs\skola\Avancerad_C++\Lab4\Rose\FgrHlder.h"

71
Lab4/graphic/dbggrphc.cpp Normal file
View File

@@ -0,0 +1,71 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: DebugGraphics; Pseudo Package body
//## Subsystem: Graphic
//## Source file: H:\WebDocs\skola\Avancerad_C++\Lab4\Rose\Graphic\DbgGrphc.cpp
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes
//## end module.includes
// DebugGraphics
#include "Graphic\DbgGrphc.h"
//## begin module.additionalDeclarations preserve=yes
//## end module.additionalDeclarations
// Class DebugGraphics
DebugGraphics::DebugGraphics()
//## begin DebugGraphics::DebugGraphics%.hasinit preserve=no
//## end DebugGraphics::DebugGraphics%.hasinit
//## begin DebugGraphics::DebugGraphics%.initialization preserve=yes
//## end DebugGraphics::DebugGraphics%.initialization
{
//## begin DebugGraphics::DebugGraphics%.body preserve=yes
//## end DebugGraphics::DebugGraphics%.body
}

89
Lab4/graphic/dbggrphc.h Normal file
View File

@@ -0,0 +1,89 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: DebugGraphics; Pseudo Package specification
//## Subsystem: Graphic
//## Source file: H:\WebDocs\skola\Avancerad_C++\Lab4\Rose\Graphic\DbgGrphc.h
#ifndef DbgGrphc_h
#define DbgGrphc_h 1
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes
//## end module.includes
// Graphics
#include "Graphic\Graphics.h"
//## begin module.additionalDeclarations preserve=yes
#include "H:\WebDocs\skola\Avancerad_C++\Lab4\Rose\Graphic\DbgGrphc.h"
//## end module.additionalDeclarations
//## Class: DebugGraphics
//## Category: Graphic
//## Subsystem: Graphic
//## Persistence: Transient
//## Cardinality/Multiplicity: n
class DebugGraphics : public Graphics //## Inherits: <unnamed>
{
//## begin DebugGraphics.initialDeclarations preserve=yes
//## end DebugGraphics.initialDeclarations
public:
//## Constructors (generated)
DebugGraphics();
//## Destructor (generated)
~DebugGraphics();

82
Lab4/graphic/graphics.cpp Normal file
View File

@@ -0,0 +1,82 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: Graphics; Pseudo Package body
//## Subsystem: Graphic
//## Source file: H:\WebDocs\skola\Avancerad_C++\Lab4\Rose\Graphic\Graphics.cpp
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes
//## end module.includes
// Graphics
#include "Graphic\Graphics.h"
//## begin module.additionalDeclarations preserve=yes
#include <iostream.h>
//## end module.additionalDeclarations
// Class Graphics
Graphics::Graphics()
//## begin Graphics::Graphics%.hasinit preserve=no
//## end Graphics::Graphics%.hasinit
//## begin Graphics::Graphics%.initialization preserve=yes
//## end Graphics::Graphics%.initialization
{
//## begin Graphics::Graphics%.body preserve=yes
//## end Graphics::Graphics%.body
}
Graphics::~Graphics()
{
//## begin Graphics::~Graphics%.body preserve=yes
//## end Graphics::~Graphics%.body

95
Lab4/graphic/graphics.h Normal file
View File

@@ -0,0 +1,95 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: Graphics; Pseudo Package specification
//## Subsystem: Graphic
//## Source file: H:\WebDocs\skola\Avancerad_C++\Lab4\Rose\Graphic\Graphics.h
#ifndef Graphics_h
#define Graphics_h 1
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes
#include "Point.h"
//## end module.includes
// Point
#include "H:\WebDocs\skola\Avancerad_C++\Lab4\Rose\Point.h"
//## begin module.additionalDeclarations preserve=yes
typedef int Color;
//## end module.additionalDeclarations
//## Class: Graphics; Abstract
//## Category: Graphic
//## Subsystem: Graphic
//## Persistence: Transient
//## Cardinality/Multiplicity: n
//## Uses: <unnamed>; Point { -> }
class Graphics
{
//## begin Graphics.initialDeclarations preserve=yes
//## end Graphics.initialDeclarations
public:
//## Constructors (generated)
Graphics();
//## Destructor (generated)
~Graphics();

120
Lab4/line.cpp Normal file
View File

@@ -0,0 +1,120 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: Line; Pseudo Package body
//## Subsystem: Figures
//## Source file: H:\WebDocs\skola\Avancerad_C++\Lab4\Rose\Line.cpp
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes
//## end module.includes
// Line
#include "H:\WebDocs\skola\Avancerad_C++\Lab4\Rose\Line.h"
//## begin module.additionalDeclarations preserve=yes
#include <iostream.h>
//## end module.additionalDeclarations
// Class Line
Line::Line (int x1, int y1, int x2, int y2, Color color)
//## begin Line::Line%939623930.hasinit preserve=no
//## end Line::Line%939623930.hasinit
//## begin Line::Line%939623930.initialization preserve=yes
//## end Line::Line%939623930.initialization
{
//## begin Line::Line%939623930.body preserve=yes
setColor(color);
Point start, end;
start.setx(x1);
start.sety(y1);
end.setx(x2);
end.sety(y2);
myPoints.add(myPoints.getSize(), start);
myPoints.add(myPoints.getSize(), end);
//## end Line::Line%939623930.body
}
Line::~Line()
{
//## begin Line::~Line%.body preserve=yes
//## end Line::~Line%.body
}
//## Other Operations (implementation)
void Line::draw (Graphics &g)
{
//## begin Line::draw%937398668.body preserve=yes
Point start,end;

101
Lab4/line.h Normal file
View File

@@ -0,0 +1,101 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: Line; Pseudo Package specification
//## Subsystem: Figures
//## Source file: H:\WebDocs\skola\Avancerad_C++\Lab4\Rose\Line.h
#ifndef Line_h
#define Line_h 1
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes
//## end module.includes
// pList
#include "H:\WebDocs\skola\Avancerad_C++\Lab4\Rose\pList.h"
// Figure
#include "H:\WebDocs\skola\Avancerad_C++\Lab4\Rose\Figure.h"
//## begin module.additionalDeclarations preserve=yes
//## end module.additionalDeclarations
//## Class: Line
//## Category: Figures
//## Subsystem: Figures
//## Persistence: Transient
//## Cardinality/Multiplicity: n
class Line : public Figure //## Inherits: <unnamed>
{
//## begin Line.initialDeclarations preserve=yes
//## end Line.initialDeclarations
public:
//## Constructors (specified)
//## Operation: Line%939623930
Line (int x1, int y1, int x2, int y2, Color color);
//## Destructor (generated)
~Line();
//## Other Operations (specified)
//## Operation: draw%937398668
void draw (Graphics &g);

136
Lab4/list.cpp Normal file
View File

@@ -0,0 +1,136 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: List; Pseudo Package body
//## Subsystem: Figures
//## Source file: H:\WebDocs\skola\Avancerad_C++\Lab4\Rose\List.cpp
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes
//## end module.includes
// List
#include "H:\WebDocs\skola\Avancerad_C++\Lab4\Rose\List.h"
//## begin module.additionalDeclarations preserve=yes
#include <stdio.h>
#include <iostream.h>
//## end module.additionalDeclarations
// Parameterized Class List
template <class T>
List<T>::List()
//## begin List::List%.hasinit preserve=no
: size(0)
//## end List::List%.hasinit
//## begin List::List%.initialization preserve=yes
//## end List::List%.initialization
{
//## begin List::List%.body preserve=yes
head=NULL;
//## end List::List%.body
}
template <class T>
List<T>::~List()
{
//## begin List::~List%.body preserve=yes
delete head;
//## end List::~List%.body
}
//## Other Operations (implementation)
template <class T>
void List<T>::add (int position, T item)
{
//## begin List::add%937398674.body preserve=yes
size++;
Node<T>* newPtr = new Node<T>(item);
if (position==0) {
newPtr->next=head;
head=newPtr;
}
else {
Node<T>* prev=head;

111
Lab4/list.h Normal file
View File

@@ -0,0 +1,111 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: List; Pseudo Package specification
//## Subsystem: Figures
//## Source file: H:\WebDocs\skola\Avancerad_C++\Lab4\Rose\List.h
#ifndef List_h
#define List_h 1
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes
//## end module.includes
// Node
#include "H:\WebDocs\skola\Avancerad_C++\Lab4\Rose\Node.h"
//## begin module.additionalDeclarations preserve=yes
//## end module.additionalDeclarations
//## Class: List; Parameterized Class
//## Category: Figures
//## Subsystem: Figures
//## Persistence: Transient
//## Cardinality/Multiplicity: n
template <class T>
class List
{
//## begin List.initialDeclarations preserve=yes
//## end List.initialDeclarations
public:
//## Constructors (generated)
List();
//## Destructor (generated)
~List();
//## Other Operations (specified)
//## Operation: add%937398674
// Denna sätter in grejjer i listan...
void add (int position, T item);
//## Operation: del%937398675
void del (int position);
//## Operation: isEmpty%937398676
bool isEmpty ();

61
Lab4/main.cpp Normal file
View File

@@ -0,0 +1,61 @@
//#
//# main.c
//#
//# =======================================================
//# Lab i Avacerad C++
//# 4. Figures
//#
//#
//# Christian Ohlsson
//# Daniel Alfredsson
//# Karlstads universitet
//# 991013
//# =======================================================
#include <iostream.h>
#include "Graphic\Graphics.h"
#include "line.h"
#include "rectngle.h"
#include "circle.h"
#include "flist.h"
#include "CmplxFgr.h"
void main(void) {
ComplexFigure cf;
FList myList;
Graphics g;
Line l(0,0,0,10, 9);
l.add(20,20);

66
Lab4/node.cpp Normal file
View File

@@ -0,0 +1,66 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: Node; Pseudo Package body
//## Subsystem: Figures
//## Source file: H:\WebDocs\skola\Avancerad_C++\Lab4\Rose\Node.cpp
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes
//## end module.includes
// Node
#include "H:\WebDocs\skola\Avancerad_C++\Lab4\Rose\Node.h"
//## begin module.additionalDeclarations preserve=yes
//## end module.additionalDeclarations
// Parameterized Class Node
template <class T>
Node<T>::Node()
//## begin Node::Node%.hasinit preserve=no
//## end Node::Node%.hasinit
//## begin Node::Node%.initialization preserve=yes
//## end Node::Node%.initialization

97
Lab4/node.h Normal file
View File

@@ -0,0 +1,97 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: Node; Pseudo Package specification
//## Subsystem: Figures
//## Source file: H:\WebDocs\skola\Avancerad_C++\Lab4\Rose\Node.h
#ifndef Node_h
#define Node_h 1
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes
//## end module.includes
//## begin module.additionalDeclarations preserve=yes
//## end module.additionalDeclarations
//## Class: Node; Parameterized Class
// detta är lite dokumentation
//## Category: Figures
//## Subsystem: Figures
//## Persistence: Transient
//## Cardinality/Multiplicity: n
template <class T>
class Node
{
//## begin Node.initialDeclarations preserve=yes
public:
Node(T theData):data(theData){next = (Node<T>*)0;}
//## end Node.initialDeclarations
public:
//## Constructors (generated)
Node();
//## Destructor (generated)
~Node();
// Additional Public Declarations
//## begin Node.public preserve=yes
Node *next;

30
Lab4/plist.cpp Normal file
View File

@@ -0,0 +1,30 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: pList; Pseudo Package body
//## Subsystem: Figures
//## Source file: H:\WebDocs\skola\Avancerad_C++\Lab4\Rose\pList.cpp
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes

48
Lab4/plist.h Normal file
View File

@@ -0,0 +1,48 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: pList; Pseudo Package specification
//## Subsystem: Figures
//## Source file: H:\WebDocs\skola\Avancerad_C++\Lab4\Rose\pList.h
#ifndef pList_h
#define pList_h 1
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes
//## end module.includes
// List
#include "H:\WebDocs\skola\Avancerad_C++\Lab4\Rose\List.h"
// Point
#include "H:\WebDocs\skola\Avancerad_C++\Lab4\Rose\Point.h"

83
Lab4/point.cpp Normal file
View File

@@ -0,0 +1,83 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: Point; Pseudo Package body
//## Subsystem: Figures
//## Source file: H:\WebDocs\skola\Avancerad_C++\Lab4\Rose\Point.cpp
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes
//## end module.includes
// Point
#include "H:\WebDocs\skola\Avancerad_C++\Lab4\Rose\Point.h"
//## begin module.additionalDeclarations preserve=yes
//## end module.additionalDeclarations
// Class Point
Point::Point()
//## begin Point::Point%.hasinit preserve=no
//## end Point::Point%.hasinit
//## begin Point::Point%.initialization preserve=yes
//## end Point::Point%.initialization
{
//## begin Point::Point%.body preserve=yes
//## end Point::Point%.body
}
Point::~Point()
{
//## begin Point::~Point%.body preserve=yes
//## end Point::~Point%.body

101
Lab4/point.h Normal file
View File

@@ -0,0 +1,101 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: Point; Pseudo Package specification
//## Subsystem: Figures
//## Source file: H:\WebDocs\skola\Avancerad_C++\Lab4\Rose\Point.h
#ifndef Point_h
#define Point_h 1
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes
//## end module.includes
//## begin module.additionalDeclarations preserve=yes
//## end module.additionalDeclarations
//## Class: Point
//## Category: Figures
//## Subsystem: Figures
//## Persistence: Transient
//## Cardinality/Multiplicity: n
class Point
{
//## begin Point.initialDeclarations preserve=yes
//## end Point.initialDeclarations
public:
//## Constructors (generated)
Point();
//## Destructor (generated)
~Point();
//## Other Operations (specified)
//## Operation: getx%937398664
int getx ();
//## Operation: gety%937398665
int gety ();
//## Operation: setx%937398666

107
Lab4/rectngle.cpp Normal file
View File

@@ -0,0 +1,107 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: Rectangle; Pseudo Package body
//## Subsystem: Figures
//## Source file: H:\WebDocs\skola\Avancerad_C++\Lab4\Rose\Rectngle.cpp
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes
//## end module.includes
// Rectangle
#include "H:\WebDocs\skola\Avancerad_C++\Lab4\Rose\Rectngle.h"
//## begin module.additionalDeclarations preserve=yes
#include <iostream.h>
//## end module.additionalDeclarations
// Class Rectangle
Rectangle::Rectangle()
//## begin Rectangle::Rectangle%.hasinit preserve=no
//## end Rectangle::Rectangle%.hasinit
//## begin Rectangle::Rectangle%.initialization preserve=yes
//## end Rectangle::Rectangle%.initialization
{
//## begin Rectangle::Rectangle%.body preserve=yes
//## end Rectangle::Rectangle%.body
}
Rectangle::Rectangle (int x1, int y1, int x2, int y2, Color color)
//## begin Rectangle::Rectangle%939623932.hasinit preserve=no
//## end Rectangle::Rectangle%939623932.hasinit
//## begin Rectangle::Rectangle%939623932.initialization preserve=yes
//## end Rectangle::Rectangle%939623932.initialization
{
//## begin Rectangle::Rectangle%939623932.body preserve=yes
setColor(color);
leftTop.setx(x1);
leftTop.sety(y1);
rightBottom.setx(x2);
rightBottom.sety(y2);
//## end Rectangle::Rectangle%939623932.body
}

106
Lab4/rectngle.h Normal file
View File

@@ -0,0 +1,106 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: Rectangle; Pseudo Package specification
//## Subsystem: Figures
//## Source file: H:\WebDocs\skola\Avancerad_C++\Lab4\Rose\Rectngle.h
#ifndef Rectngle_h
#define Rectngle_h 1
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes
//## end module.includes
// Point
#include "H:\WebDocs\skola\Avancerad_C++\Lab4\Rose\Point.h"
// Figure
#include "H:\WebDocs\skola\Avancerad_C++\Lab4\Rose\Figure.h"
//## begin module.additionalDeclarations preserve=yes
//## end module.additionalDeclarations
//## Class: Rectangle
//## Category: Figures
//## Subsystem: Figures
//## Persistence: Transient
//## Cardinality/Multiplicity: n
class Rectangle : public Figure //## Inherits: <unnamed>
{
//## begin Rectangle.initialDeclarations preserve=yes
//## end Rectangle.initialDeclarations
public:
//## Constructors (generated)
Rectangle();
//## Constructors (specified)
//## Operation: Rectangle%939623932
Rectangle (int x1, int y1, int x2, int y2, Color color);
//## Destructor (generated)
~Rectangle();
//## Other Operations (specified)
//## Operation: draw%937398672

196
Lab4/rose.dsp Normal file
View File

@@ -0,0 +1,196 @@
# Microsoft Developer Studio Project File - Name="Rose" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=Rose - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "Rose.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "Rose.mak" CFG="Rose - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "Rose - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "Rose - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "Rose - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD BASE RSC /l 0x41d /d "NDEBUG"
# ADD RSC /l 0x41d /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
!ELSEIF "$(CFG)" == "Rose - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /FR /YX /FD /GZ /c
# ADD BASE RSC /l 0x41d /d "_DEBUG"
# ADD RSC /l 0x41d /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
!ENDIF
# Begin Target
# Name "Rose - Win32 Release"
# Name "Rose - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=.\Circle.cpp
# End Source File
# Begin Source File
SOURCE=.\CmplxFgr.cpp
# End Source File
# Begin Source File
SOURCE=.\Graphic\DbgGrphc.cpp
# End Source File
# Begin Source File
SOURCE=.\FgrHlder.cpp
# End Source File
# Begin Source File
SOURCE=.\Figure.cpp
# End Source File
# Begin Source File
SOURCE=.\Flist.cpp
# End Source File
# Begin Source File
SOURCE=.\Graphic\Graphics.cpp
# End Source File
# Begin Source File
SOURCE=.\Line.cpp
# End Source File
# Begin Source File
SOURCE=.\main.cpp
# End Source File
# Begin Source File
SOURCE=.\pList.cpp
# End Source File
# Begin Source File
SOURCE=.\Point.cpp
# End Source File
# Begin Source File
SOURCE=.\Rectngle.cpp
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# Begin Source File
SOURCE=.\Circle.h
# End Source File
# Begin Source File
SOURCE=.\CmplxFgr.h
# End Source File
# Begin Source File
SOURCE=.\Graphic\DbgGrphc.h
# End Source File
# Begin Source File
SOURCE=.\FgrHlder.h
# End Source File
# Begin Source File
SOURCE=.\Figure.h
# End Source File
# Begin Source File
SOURCE=.\Flist.h
# End Source File
# Begin Source File
SOURCE=.\Graphic\Graphics.h
# End Source File
# Begin Source File
SOURCE=.\Line.h
# End Source File
# Begin Source File
SOURCE=.\List.h
# End Source File
# Begin Source File
SOURCE=.\Node.h
# End Source File
# Begin Source File
SOURCE=.\pList.h
# End Source File
# Begin Source File
SOURCE=.\Point.h
# End Source File
# Begin Source File
SOURCE=.\Rectngle.h
# End Source File
# End Group
# Begin Group "Resource Files"
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
# End Group
# End Target
# End Project

29
Lab4/rose.dsw Normal file
View File

@@ -0,0 +1,29 @@
Microsoft Developer Studio Workspace File, Format Version 6.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
Project: "Rose"=".\Rose.dsp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################

118
Lab5/array.h Normal file
View File

@@ -0,0 +1,118 @@
//##################################################################
// LAB 5
// ADVANCED PROGRAMMING IN C++
// MATRIX/ARRAY WITH TRY-CATCH
//==================================================================
// array.h
// CLASS IMPLEMENTATION AND DEFINITION FOR
// THE ARRAY
// Christian Ohlsson
// Daniel Alfredsson
// Karlstad 990927
//==================================================================
#include <iostream.h>
class Array {
private:
int size; //The size of the Array
int *buffer; //Pointer to an int-buffer
public:
~Array();
Array(const int s=0);
Array(const Array &src);
void operator = (const Array &src);
Array Array::operator +(const Array &src);
int &operator [] (int index) const;
int getSize() const;
};
//################################################################
// Constructor
// Creates a new Array
//================================================================
Array::Array(const int s) {
try {
buffer = new int[s];
}catch(MemoryError &e){ e.Print(); }
size= s;
}
//################################################################
// Constructor
// Copys an array
//================================================================
Array::Array(const Array &src) {
size = src.size;
try {
buffer = new int[size];
}catch(MemoryError &e){ e.Print(); }
for(int i=0 ; i<size ; i++)
buffer[i] = src.buffer[i];
}
//################################################################
// Operator overload
// Allows to assign a Array to another
//================================================================
void Array::operator = (const Array &src) {
delete [] buffer;
size = src.size;
try {
buffer = new int[size];
}catch(MemoryError &e){ e.Print(); }

44
Lab5/except.h Normal file
View File

@@ -0,0 +1,44 @@
//##################################################################
// LAB 5
// ADVANCED PROGRAMMING IN C++
// MATRIX/ARRAY WITH TRY-CATCH
//==================================================================
// except.h
// CLASS IMPLEMENTATION AND DEFINITION FOR
// ALL ERRORS
// Christian Ohlsson
// Daniel Alfredsson
// Karlstad 990927
//==================================================================
#ifndef _EXCEPT_H_
#define _EXCEPT_H_
#include <iostream.h>
class Error{
public:
virtual void Print() = 0;
};

112
Lab5/lab5.dsp Normal file
View File

@@ -0,0 +1,112 @@
# Microsoft Developer Studio Project File - Name="Lab5" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=Lab5 - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "Lab5.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "Lab5.mak" CFG="Lab5 - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "Lab5 - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "Lab5 - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "Lab5 - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD BASE RSC /l 0x41d /d "NDEBUG"
# ADD RSC /l 0x41d /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
!ELSEIF "$(CFG)" == "Lab5 - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD BASE RSC /l 0x41d /d "_DEBUG"
# ADD RSC /l 0x41d /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
!ENDIF
# Begin Target
# Name "Lab5 - Win32 Release"
# Name "Lab5 - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=.\matrix.cpp
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# Begin Source File
SOURCE=.\array.h
# End Source File
# Begin Source File
SOURCE=.\except.h
# End Source File
# Begin Source File
SOURCE=.\matrix.h
# End Source File
# End Group
# Begin Group "Resource Files"
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
# End Group
# End Target
# End Project

29
Lab5/lab5.dsw Normal file
View File

@@ -0,0 +1,29 @@
Microsoft Developer Studio Workspace File, Format Version 6.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
Project: "Lab5"=".\Lab5.dsp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################

24
Lab5/matrix.cpp Normal file
View File

@@ -0,0 +1,24 @@
//matrix.cpp
#include "matrix.h"
int main() {
Array a(2); //Sätt till 3 om du vill ha SizeError
Matrix b (2,2);
cout << "input Array: " << endl;
cin>>a;
cout << "input Matrix: " << endl;
cin >>b;
try {
// b[2] = a; //Ta med om du vill ha RangeError

120
Lab5/matrix.h Normal file
View File

@@ -0,0 +1,120 @@
//##################################################################
// LAB 5
// ADVANCED PROGRAMMING IN C++
// MATRIX/ARRAY WITH TRY-CATCH
//==================================================================
// matrix.h
// CLASS IMPLEMENTATION AND DEFINITION FOR
// THE MATRIX
// Christian Ohlsson
// Daniel Alfredsson
// Karlstad 990907
//==================================================================
#include <stdlib.h>
#include "except.h"
#include "array.h"
class Matrix {
private:
int cols, rows; //# of cols and rows in the matrix
Array *myMatrix; //Array-pointer to our matrix
public:
void Matrix::operator = (const Matrix &src);
int getCols() const { return cols;};
int getRows() const { return rows;};
Array &Matrix::operator [] (int index) const;
Matrix(const Matrix &src);
Matrix(int cols, int rows);
~Matrix();
};
//################################################################
// Constructor
// Creates a new Matrix with 'c' columns and 'r' rows
//================================================================
Matrix::Matrix(int c, int r) {
try {
myMatrix = new Array[r];
}catch(MemoryError &e){ e.Print(); }
for(int i=0; i < c; i++)
myMatrix[i] = Array(c);
cols = c;
rows = r;
}
//################################################################
// Constructor
// Creates a new copy of a Matrix
//================================================================
Matrix::Matrix(const Matrix &src) {
cols = src.cols;
rows = src.rows;
int i,j;
try {
myMatrix = new Array[rows];
}catch(MemoryError &e){ e.Print(); }
for(i=0; i < cols; i++)
myMatrix[i] = Array(cols);
for(i=0 ; i < cols ; i++)

7910
Lab6/RoseModel.mdl Normal file

File diff suppressed because it is too large Load Diff

105
Lab6/circle.cpp Normal file
View File

@@ -0,0 +1,105 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: Circle; Pseudo Package body
//## Subsystem: Figures
//## Source file: Circle.cpp
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes
//## end module.includes
// Circle
#include "Circle.h"
//## begin module.additionalDeclarations preserve=yes
//## end module.additionalDeclarations
// Class Circle
Circle::Circle()
//## begin Circle::Circle%.hasinit preserve=no
//## end Circle::Circle%.hasinit
//## begin Circle::Circle%.initialization preserve=yes
//## end Circle::Circle%.initialization
{
//## begin Circle::Circle%.body preserve=yes
//## end Circle::Circle%.body
}
Circle::Circle (int x, int y, int r, Color color)
//## begin Circle::Circle%939623931.hasinit preserve=no
//## end Circle::Circle%939623931.hasinit
//## begin Circle::Circle%939623931.initialization preserve=yes
//## end Circle::Circle%939623931.initialization
{
//## begin Circle::Circle%939623931.body preserve=yes
setColor(color);
center.setx(x);
center.sety(y);
radius=r;
//## end Circle::Circle%939623931.body
}
Circle::~Circle()

116
Lab6/circle.h Normal file
View File

@@ -0,0 +1,116 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: Circle; Pseudo Package specification
//## Subsystem: Figures
//## Source file: Circle.h
#ifndef Circle_h
#define Circle_h 1
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes
//## end module.includes
// Point
#include "Point.h"
// Figure
#include "Figure.h"
//## begin module.additionalDeclarations preserve=yes
//## end module.additionalDeclarations
//## Class: Circle
//## Category: Figures
//## Subsystem: Figures
//## Persistence: Transient
//## Cardinality/Multiplicity: n
class Circle : virtual public Figure //## Inherits: <unnamed>
{
//## begin Circle.initialDeclarations preserve=yes
//## end Circle.initialDeclarations
public:
//## Constructors (generated)
Circle();
//## Constructors (specified)
//## Operation: Circle%939623931
Circle (int x, int y, int r, Color color);
//## Destructor (generated)
~Circle();
//## Other Operations (specified)
//## Operation: draw%937398670
void draw (Graphics &g);
//## Operation: erase%937398671
void erase (Graphics &g);

87
Lab6/cmplxfgr.cpp Normal file
View File

@@ -0,0 +1,87 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: ComplexFigure; Pseudo Package body
//## Subsystem: Figures
//## Source file: CmplxFgr.cpp
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes
//## end module.includes
// ComplexFigure
#include "CmplxFgr.h"
//## begin module.additionalDeclarations preserve=yes
#include "Graphics.h"
//## end module.additionalDeclarations
// Class ComplexFigure
ComplexFigure::ComplexFigure()
//## begin ComplexFigure::ComplexFigure%.hasinit preserve=no
//## end ComplexFigure::ComplexFigure%.hasinit
//## begin ComplexFigure::ComplexFigure%.initialization preserve=yes
//## end ComplexFigure::ComplexFigure%.initialization
{
//## begin ComplexFigure::ComplexFigure%.body preserve=yes
//## end ComplexFigure::ComplexFigure%.body
}
ComplexFigure::~ComplexFigure()
{
//## begin ComplexFigure::~ComplexFigure%.body preserve=yes
//## end ComplexFigure::~ComplexFigure%.body
}

100
Lab6/cmplxfgr.h Normal file
View File

@@ -0,0 +1,100 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: ComplexFigure; Pseudo Package specification
//## Subsystem: Figures
//## Source file: CmplxFgr.h
#ifndef CmplxFgr_h
#define CmplxFgr_h 1
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes
//## end module.includes
// Figure
#include "Figure.h"
// FList
#include "FList.h"
//## begin module.additionalDeclarations preserve=yes
//## end module.additionalDeclarations
//## Class: ComplexFigure
//## Category: Figures
//## Subsystem: Figures
//## Persistence: Transient
//## Cardinality/Multiplicity: n
class ComplexFigure : public Figure //## Inherits: <unnamed>
{
//## begin ComplexFigure.initialDeclarations preserve=yes
//## end ComplexFigure.initialDeclarations
public:
//## Constructors (generated)
ComplexFigure();
//## Destructor (generated)
~ComplexFigure();
//## Other Operations (specified)
//## Operation: draw%939104770
void draw (Graphics &g);

71
Lab6/dbggrphc.cpp Normal file
View File

@@ -0,0 +1,71 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: DebugGraphics; Pseudo Package body
//## Subsystem: Figures
//## Source file: DbgGrphc.cpp
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes
//## end module.includes
// DebugGraphics
#include "DbgGrphc.h"
//## begin module.additionalDeclarations preserve=yes
//## end module.additionalDeclarations
// Class DebugGraphics
DebugGraphics::DebugGraphics()
//## begin DebugGraphics::DebugGraphics%.hasinit preserve=no
//## end DebugGraphics::DebugGraphics%.hasinit
//## begin DebugGraphics::DebugGraphics%.initialization preserve=yes
//## end DebugGraphics::DebugGraphics%.initialization
{
//## begin DebugGraphics::DebugGraphics%.body preserve=yes
//## end DebugGraphics::DebugGraphics%.body
}

89
Lab6/dbggrphc.h Normal file
View File

@@ -0,0 +1,89 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: DebugGraphics; Pseudo Package specification
//## Subsystem: Figures
//## Source file: DbgGrphc.h
#ifndef DbgGrphc_h
#define DbgGrphc_h 1
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes
//## end module.includes
// Graphics
#include "Graphics.h"
//## begin module.additionalDeclarations preserve=yes
#include "DbgGrphc.h"
//## end module.additionalDeclarations
//## Class: DebugGraphics
//## Category: Graphic
//## Subsystem: Figures
//## Persistence: Transient
//## Cardinality/Multiplicity: n
class DebugGraphics : public Graphics //## Inherits: <unnamed>
{
//## begin DebugGraphics.initialDeclarations preserve=yes
//## end DebugGraphics.initialDeclarations
public:
//## Constructors (generated)
DebugGraphics();
//## Destructor (generated)
~DebugGraphics();

61
Lab6/fgrhlder.cpp Normal file
View File

@@ -0,0 +1,61 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: FigureHolder; Pseudo Package body
//## Subsystem: Figures
//## Source file: FgrHlder.cpp
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes
//## end module.includes
// FigureHolder
#include "FgrHlder.h"
//## begin module.additionalDeclarations preserve=yes
//## end module.additionalDeclarations
// Class FigureHolder
FigureHolder::FigureHolder()
//## begin FigureHolder::FigureHolder%.hasinit preserve=no
//## end FigureHolder::FigureHolder%.hasinit
//## begin FigureHolder::FigureHolder%.initialization preserve=yes
//## end FigureHolder::FigureHolder%.initialization

94
Lab6/fgrhlder.h Normal file
View File

@@ -0,0 +1,94 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: FigureHolder; Pseudo Package specification
//## Subsystem: Figures
//## Source file: FgrHlder.h
#ifndef FgrHlder_h
#define FgrHlder_h 1
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes
//## end module.includes
// Figure
#include "Figure.h"
//## begin module.additionalDeclarations preserve=yes
//## end module.additionalDeclarations
//## Class: FigureHolder
//## Category: Figures
//## Subsystem: Figures
//## Persistence: Transient
//## Cardinality/Multiplicity: n
class FigureHolder
{
//## begin FigureHolder.initialDeclarations preserve=yes
public:
FigureHolder(Figure& f)
{
myFigure = f.clone();
}
//## end FigureHolder.initialDeclarations
public:
//## Constructors (generated)
FigureHolder();
//## Destructor (generated)

68
Lab6/figure.cpp Normal file
View File

@@ -0,0 +1,68 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: Figure; Pseudo Package body
//## Subsystem: Figures
//## Source file: Figure.cpp
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes
//## end module.includes
// Figure
#include "Figure.h"
//## begin module.additionalDeclarations preserve=yes
//## end module.additionalDeclarations
// Class Figure
Figure::Figure()
//## begin Figure::Figure%.hasinit preserve=no
//## end Figure::Figure%.hasinit
//## begin Figure::Figure%.initialization preserve=yes
//## end Figure::Figure%.initialization
{
//## begin Figure::Figure%.body preserve=yes
//## end Figure::Figure%.body

103
Lab6/figure.h Normal file
View File

@@ -0,0 +1,103 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: Figure; Pseudo Package specification
//## Subsystem: Figures
//## Source file: Figure.h
#ifndef Figure_h
#define Figure_h 1
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes
//## end module.includes
// Graphics
#include "Graphics.h"
//## begin module.additionalDeclarations preserve=yes
//## end module.additionalDeclarations
//## Class: Figure; Abstract
//## Category: Figures
//## Subsystem: Figures
//## Persistence: Transient
//## Cardinality/Multiplicity: n
//## Uses: <unnamed>; Graphics { -> }
class Figure
{
//## begin Figure.initialDeclarations preserve=yes
//## end Figure.initialDeclarations
public:
//## Constructors (generated)
Figure();
//## Destructor (generated)
virtual ~Figure();
//## Other Operations (specified)
//## Operation: draw%937398679
virtual void draw (Graphics &g) = 0;
//## Operation: erase%937398680

30
Lab6/flist.cpp Normal file
View File

@@ -0,0 +1,30 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: FList; Pseudo Package body
//## Subsystem: Figures
//## Source file: FList.cpp
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes

48
Lab6/flist.h Normal file
View File

@@ -0,0 +1,48 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: FList; Pseudo Package specification
//## Subsystem: Figures
//## Source file: FList.h
#ifndef FList_h
#define FList_h 1
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes
//## end module.includes
// List
#include "List.h"
// FigureHolder
#include "FgrHlder.h"

51
Lab6/fstream.cpp Normal file
View File

@@ -0,0 +1,51 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: fstream; Pseudo Package body
//## Subsystem: Figures
//## Source file: H:\WebDocs\skola\Avancerad_C++\Lab6\fstream.cpp
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes
//## end module.includes
// fstream
#include "H:\WebDocs\skola\Avancerad_C++\Lab6\fstream.h"
//## begin module.additionalDeclarations preserve=yes
//## end module.additionalDeclarations
// Class fstream
fstream::fstream()

75
Lab6/fstream.h Normal file
View File

@@ -0,0 +1,75 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: fstream; Pseudo Package specification
//## Subsystem: Figures
//## Source file: H:\WebDocs\skola\Avancerad_C++\Lab6\fstream.h
#ifndef fstream_h
#define fstream_h 1
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes
//## end module.includes
//## begin module.additionalDeclarations preserve=yes
//## end module.additionalDeclarations
//## Class: fstream
//## Category: Persist
//## Subsystem: Figures
//## Persistence: Transient
//## Cardinality/Multiplicity: n
class fstream
{
//## begin fstream.initialDeclarations preserve=yes
//## end fstream.initialDeclarations
public:
//## Constructors (generated)
fstream();

82
Lab6/graphics.cpp Normal file
View File

@@ -0,0 +1,82 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: Graphics; Pseudo Package body
//## Subsystem: Figures
//## Source file: Graphics.cpp
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes
//## end module.includes
// Graphics
#include "Graphics.h"
//## begin module.additionalDeclarations preserve=yes
#include <iostream.h>
//## end module.additionalDeclarations
// Class Graphics
Graphics::Graphics()
//## begin Graphics::Graphics%.hasinit preserve=no
//## end Graphics::Graphics%.hasinit
//## begin Graphics::Graphics%.initialization preserve=yes
//## end Graphics::Graphics%.initialization
{
//## begin Graphics::Graphics%.body preserve=yes
//## end Graphics::Graphics%.body
}
Graphics::~Graphics()
{
//## begin Graphics::~Graphics%.body preserve=yes
//## end Graphics::~Graphics%.body

95
Lab6/graphics.h Normal file
View File

@@ -0,0 +1,95 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: Graphics; Pseudo Package specification
//## Subsystem: Figures
//## Source file: Graphics.h
#ifndef Graphics_h
#define Graphics_h 1
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes
#include "Point.h"
//## end module.includes
// Point
#include "Point.h"
//## begin module.additionalDeclarations preserve=yes
typedef int Color;
//## end module.additionalDeclarations
//## Class: Graphics; Abstract
//## Category: Graphic
//## Subsystem: Figures
//## Persistence: Transient
//## Cardinality/Multiplicity: n
//## Uses: <unnamed>; Point { -> }
class Graphics
{
//## begin Graphics.initialDeclarations preserve=yes
//## end Graphics.initialDeclarations
public:
//## Constructors (generated)
Graphics();
//## Destructor (generated)
~Graphics();

15
Lab6/h.cpp Normal file
View File

@@ -0,0 +1,15 @@
Pcircle::Pcircle(int xPos, int yPos, int _radius, Color _color)
//## begin Pcircle::Pcircle%.hasinit preserve=no
//## end Pcircle::Pcircle%.hasinit
//## begin Pcircle::Pcircle%.initialization preserve=yes
//## end Pcircle::Pcircle%.initialization
{
//## begin Pcircle::Pcircle%.body preserve=yes
// Circle::Circle(xPos, yPos, _radius, _color);
_pobj = Persistent::addType("Pcircle", new Pcircle);
set_center(xPos, yPos);
set_radius(_radius);
set_color(_color);
//## end Pcircle::Pcircle%.body
}

30
Lab6/instmap.cpp Normal file
View File

@@ -0,0 +1,30 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: InstMap; Pseudo Package body
//## Subsystem: Figures
//## Source file: InstMap.cpp
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes

49
Lab6/instmap.h Normal file
View File

@@ -0,0 +1,49 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: InstMap; Pseudo Package specification
//## Subsystem: Figures
//## Source file: InstMap.h
#ifndef InstMap_h
#define InstMap_h 1
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes
#include "str.h"
//## end module.includes
// MapFake
#include "MapFake.h"
// Persistent
//#include "Prsstent.h"

272
Lab6/lab6.dsp Normal file
View File

@@ -0,0 +1,272 @@
# Microsoft Developer Studio Project File - Name="lab6" - Package Owner=<4>
# Microsoft Developer Studio Generated Build File, Format Version 6.00
# ** DO NOT EDIT **
# TARGTYPE "Win32 (x86) Console Application" 0x0103
CFG=lab6 - Win32 Debug
!MESSAGE This is not a valid makefile. To build this project using NMAKE,
!MESSAGE use the Export Makefile command and run
!MESSAGE
!MESSAGE NMAKE /f "lab6.mak".
!MESSAGE
!MESSAGE You can specify a configuration when running NMAKE
!MESSAGE by defining the macro CFG on the command line. For example:
!MESSAGE
!MESSAGE NMAKE /f "lab6.mak" CFG="lab6 - Win32 Debug"
!MESSAGE
!MESSAGE Possible choices for configuration are:
!MESSAGE
!MESSAGE "lab6 - Win32 Release" (based on "Win32 (x86) Console Application")
!MESSAGE "lab6 - Win32 Debug" (based on "Win32 (x86) Console Application")
!MESSAGE
# Begin Project
# PROP AllowPerConfigDependencies 0
# PROP Scc_ProjName ""
# PROP Scc_LocalPath ""
CPP=cl.exe
RSC=rc.exe
!IF "$(CFG)" == "lab6 - Win32 Release"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 0
# PROP BASE Output_Dir "Release"
# PROP BASE Intermediate_Dir "Release"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 0
# PROP Output_Dir "Release"
# PROP Intermediate_Dir "Release"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD CPP /nologo /W3 /GX /O2 /D "WIN32" /D "NDEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /c
# ADD BASE RSC /l 0x41d /d "NDEBUG"
# ADD RSC /l 0x41d /d "NDEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /machine:I386
!ELSEIF "$(CFG)" == "lab6 - Win32 Debug"
# PROP BASE Use_MFC 0
# PROP BASE Use_Debug_Libraries 1
# PROP BASE Output_Dir "Debug"
# PROP BASE Intermediate_Dir "Debug"
# PROP BASE Target_Dir ""
# PROP Use_MFC 0
# PROP Use_Debug_Libraries 1
# PROP Output_Dir "Debug"
# PROP Intermediate_Dir "Debug"
# PROP Target_Dir ""
# ADD BASE CPP /nologo /W3 /Gm /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD CPP /nologo /W1 /Gm /vmg /GX /ZI /Od /D "WIN32" /D "_DEBUG" /D "_CONSOLE" /D "_MBCS" /YX /FD /GZ /c
# ADD BASE RSC /l 0x41d /d "_DEBUG"
# ADD RSC /l 0x41d /d "_DEBUG"
BSC32=bscmake.exe
# ADD BASE BSC32 /nologo
# ADD BSC32 /nologo
LINK32=link.exe
# ADD BASE LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
# ADD LINK32 kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib kernel32.lib user32.lib gdi32.lib winspool.lib comdlg32.lib advapi32.lib shell32.lib ole32.lib oleaut32.lib uuid.lib odbc32.lib odbccp32.lib /nologo /subsystem:console /debug /machine:I386 /pdbtype:sept
!ENDIF
# Begin Target
# Name "lab6 - Win32 Release"
# Name "lab6 - Win32 Debug"
# Begin Group "Source Files"
# PROP Default_Filter "cpp;c;cxx;rc;def;r;odl;idl;hpj;bat"
# Begin Source File
SOURCE=.\Circle.cpp
# End Source File
# Begin Source File
SOURCE=.\CmplxFgr.cpp
# End Source File
# Begin Source File
SOURCE=.\DbgGrphc.cpp
# End Source File
# Begin Source File
SOURCE=.\FgrHlder.cpp
# End Source File
# Begin Source File
SOURCE=.\Figure.cpp
# End Source File
# Begin Source File
SOURCE=.\FList.cpp
# End Source File
# Begin Source File
SOURCE=.\Graphics.cpp
# End Source File
# Begin Source File
SOURCE=.\InstMap.cpp
# End Source File
# Begin Source File
SOURCE=.\Line.cpp
# End Source File
# Begin Source File
SOURCE=.\main.cpp
# End Source File
# Begin Source File
SOURCE=.\Pcircle.cpp
# End Source File
# Begin Source File
SOURCE=.\PersFig.cpp
# End Source File
# Begin Source File
SOURCE=.\Pline.cpp
# End Source File
# Begin Source File
SOURCE=.\pList.cpp
# End Source File
# Begin Source File
SOURCE=.\Point.cpp
# End Source File
# Begin Source File
SOURCE=.\Prctngle.cpp
# End Source File
# Begin Source File
SOURCE=.\Prsstent.cpp
# End Source File
# Begin Source File
SOURCE=.\PsMap.cpp
# End Source File
# Begin Source File
SOURCE=.\PStream.cpp
# End Source File
# Begin Source File
SOURCE=.\Rectngle.cpp
# End Source File
# Begin Source File
SOURCE=.\Str.cpp
# End Source File
# End Group
# Begin Group "Header Files"
# PROP Default_Filter "h;hpp;hxx;hm;inl"
# Begin Source File
SOURCE=.\Circle.h
# End Source File
# Begin Source File
SOURCE=.\CmplxFgr.h
# End Source File
# Begin Source File
SOURCE=.\DbgGrphc.h
# End Source File
# Begin Source File
SOURCE=.\FgrHlder.h
# End Source File
# Begin Source File
SOURCE=.\Figure.h
# End Source File
# Begin Source File
SOURCE=.\FList.h
# End Source File
# Begin Source File
SOURCE=.\Graphics.h
# End Source File
# Begin Source File
SOURCE=.\InstMap.h
# End Source File
# Begin Source File
SOURCE=.\Line.h
# End Source File
# Begin Source File
SOURCE=.\List.h
# End Source File
# Begin Source File
SOURCE=.\MapFake.h
# End Source File
# Begin Source File
SOURCE=.\Node.h
# End Source File
# Begin Source File
SOURCE=.\Pcircle.h
# End Source File
# Begin Source File
SOURCE=.\PersFig.h
# End Source File
# Begin Source File
SOURCE=.\Pline.h
# End Source File
# Begin Source File
SOURCE=.\pList.h
# End Source File
# Begin Source File
SOURCE=.\Point.h
# End Source File
# Begin Source File
SOURCE=.\Prctngle.h
# End Source File
# Begin Source File
SOURCE=.\Prsstent.h
# End Source File
# Begin Source File
SOURCE=.\PsMap.h
# End Source File
# Begin Source File
SOURCE=.\PStream.h
# End Source File
# Begin Source File
SOURCE=.\Rectngle.h
# End Source File
# Begin Source File
SOURCE=.\Str.h
# End Source File
# End Group
# Begin Group "Resource Files"
# PROP Default_Filter "ico;cur;bmp;dlg;rc2;rct;bin;rgs;gif;jpg;jpeg;jpe"
# End Group
# End Target
# End Project

29
Lab6/lab6.dsw Normal file
View File

@@ -0,0 +1,29 @@
Microsoft Developer Studio Workspace File, Format Version 6.00
# WARNING: DO NOT EDIT OR DELETE THIS WORKSPACE FILE!
###############################################################################
Project: "lab6"=".\lab6.dsp" - Package Owner=<4>
Package=<5>
{{{
}}}
Package=<4>
{{{
}}}
###############################################################################
Global:
Package=<5>
{{{
}}}
Package=<3>
{{{
}}}
###############################################################################

120
Lab6/line.cpp Normal file
View File

@@ -0,0 +1,120 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: Line; Pseudo Package body
//## Subsystem: Figures
//## Source file: Line.cpp
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes
//## end module.includes
// Line
#include "Line.h"
//## begin module.additionalDeclarations preserve=yes
#include <iostream.h>
//## end module.additionalDeclarations
// Class Line
Line::Line (int x1, int y1, int x2, int y2, Color color)
//## begin Line::Line%939623930.hasinit preserve=no
//## end Line::Line%939623930.hasinit
//## begin Line::Line%939623930.initialization preserve=yes
//## end Line::Line%939623930.initialization
{
//## begin Line::Line%939623930.body preserve=yes
setColor(color);
Point start, end;
start.setx(x1);
start.sety(y1);
end.setx(x2);
end.sety(y2);
myPoints.add(myPoints.getSize(), start);
myPoints.add(myPoints.getSize(), end);
//## end Line::Line%939623930.body
}
Line::~Line()
{
//## begin Line::~Line%.body preserve=yes
//## end Line::~Line%.body
}
//## Other Operations (implementation)
void Line::draw (Graphics &g)
{
//## begin Line::draw%937398668.body preserve=yes
Point start,end;

102
Lab6/line.h Normal file
View File

@@ -0,0 +1,102 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: Line; Pseudo Package specification
//## Subsystem: Figures
//## Source file: Line.h
#ifndef Line_h
#define Line_h 1
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes
//## end module.includes
// pList
#include "pList.h"
// Figure
#include "Figure.h"
//## begin module.additionalDeclarations preserve=yes
//## end module.additionalDeclarations
//## Class: Line
//## Category: Figures
//## Subsystem: Figures
//## Persistence: Transient
//## Cardinality/Multiplicity: n
class Line : public Figure //## Inherits: <unnamed>
{
//## begin Line.initialDeclarations preserve=yes
//## end Line.initialDeclarations
public:
//## Constructors (specified)
//## Operation: Line%939623930
Line (int x1, int y1, int x2, int y2, Color color);
Line(){};
//## Destructor (generated)
~Line();
//## Other Operations (specified)
//## Operation: draw%937398668

136
Lab6/list.cpp Normal file
View File

@@ -0,0 +1,136 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: List; Pseudo Package body
//## Subsystem: Figures
//## Source file: H:\WebDocs\skola\Avancerad_C++\Lab6\List.cpp
//## begin module. preserve=no
//## end module.
//## begin module.includes preserve=yes
//## end module.includes
// List
#include "H:\WebDocs\skola\Avancerad_C++\Lab6\List.h"
//## begin module.additionalDeclarations preserve=yes
#include <stdio.h>
#include <iostream.h>
//## end module.additionalDeclarations
// Parameterized Class List
template <class T>
List<T>::List()
//## begin List::List%.hasinit preserve=no
: size(0)
//## end List::List%.hasinit
//## begin List::List%.initialization preserve=yes
//## end List::List%.initialization
{
//## begin List::List%.body preserve=yes
head=NULL;
//## end List::List%.body
}
template <class T>
List<T>::~List()
{
//## begin List::~List%.body preserve=yes
delete head;
//## end List::~List%.body
}
//## Other Operations (implementation)
template <class T>
void List<T>::add (int position, T item)
{
//## begin List::add%937398674.body preserve=yes
size++;
Node<T>* newPtr = new Node<T>(item);
if (position==0) {
newPtr->next=head;
head=newPtr;
}
else {
Node<T>* prev=head;

111
Lab6/list.h Normal file
View File

@@ -0,0 +1,111 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: List; Pseudo Package specification
//## Subsystem: Figures
//## Source file: List.h
#ifndef List_h
#define List_h 1
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes
//## end module.includes
// Node
#include "Node.h"
//## begin module.additionalDeclarations preserve=yes
//## end module.additionalDeclarations
//## Class: List; Parameterized Class
//## Category: Figures
//## Subsystem: Figures
//## Persistence: Transient
//## Cardinality/Multiplicity: n
template <class T>
class List
{
//## begin List.initialDeclarations preserve=yes
//## end List.initialDeclarations
public:
//## Constructors (generated)
List();
//## Destructor (generated)
~List();
//## Other Operations (specified)
//## Operation: add%937398674
// Denna sätter in grejjer i listan...
void add (int position, T item);
//## Operation: del%937398675
void del (int position);
//## Operation: isEmpty%937398676
bool isEmpty ();

89
Lab6/main.cpp Normal file
View File

@@ -0,0 +1,89 @@
//#
//# main.c
//#
//# =======================================================
//# Lab i Avacerad C++
//# 4. Figures
//#
//#
//# Christian Ohlsson
//# Daniel Alfredsson
//# Karlstads universitet
//# 991013
//# =======================================================
#include <iostream.h>
#include "Graphics.h"
#include "line.h"
#include "rectngle.h"
#include "circle.h"
#include "flist.h"
#include "CmplxFgr.h"
#include "pstream.h"
#include "pcircle.h"
#include "prctngle.h"
void archive(int& i, PStream& ps){
if(ps.isSaving())
ps<<i<<endl;
else
ps>>i;
}
void archive(Point& i, PStream& ps){
if(ps.isSaving()){
ps<<i.getx()<<endl;
ps<<i.gety()<<endl;
}
else{
int x;
ps>>x;
i.setx(x);
ps>>x;
i.sety(x);
}

48
Lab6/mapfake.cpp Normal file
View File

@@ -0,0 +1,48 @@
template <class KeyType, class DataType>
Mapfake<KeyType, DataType>::Mapfake(){}
template <class KeyType, class DataType>
int Mapfake<KeyType, DataType>::getSize(){
return list.getSize();
}
template <class KeyType, class DataType>
DataType Mapfake<KeyType, DataType>::find(KeyType key)
{
int i=0;
if(list.getItem(0)->getKey() == key)
return list.getItem(0)->getData();
while(!list.isEmpty()) {
i++;
if(list.getItem(i)->getKey() == key)
return list.getItem(i)->getData();
}
return (DataType)0; // Just to supress compilerwarning
}

32
Lab6/mapfake.h Normal file
View File

@@ -0,0 +1,32 @@
#ifndef __MAP_H
#define __MAP_H
#include <iostream.h>
#include "List.h"
template <class KeyType, class DataType>
class Mapfake{
private:
typedef class Tuple{
KeyType key;
DataType data;
public:
Tuple(KeyType _key, DataType _data){key = _key; data = _data;}
KeyType getKey(){return key;}

66
Lab6/node.cpp Normal file
View File

@@ -0,0 +1,66 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: Node; Pseudo Package body
//## Subsystem: Figures
//## Source file: Node.cpp
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes
//## end module.includes
// Node
#include "Node.h"
//## begin module.additionalDeclarations preserve=yes
//## end module.additionalDeclarations
// Parameterized Class Node
template <class T>
Node<T>::Node()
//## begin Node::Node%.hasinit preserve=no
//## end Node::Node%.hasinit
//## begin Node::Node%.initialization preserve=yes
//## end Node::Node%.initialization

95
Lab6/node.h Normal file
View File

@@ -0,0 +1,95 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: Node; Pseudo Package specification
//## Subsystem: Figures
//## Source file: Node.h
#ifndef Node_h
#define Node_h 1
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes
//## end module.includes
//## begin module.additionalDeclarations preserve=yes
//## end module.additionalDeclarations
//## Class: Node; Parameterized Class
//## Category: Figures
//## Subsystem: Figures
//## Persistence: Transient
//## Cardinality/Multiplicity: n
template <class T>
class Node
{
//## begin Node.initialDeclarations preserve=yes
public:
Node(T theData):data(theData){next = (Node<T>*)0;}
//## end Node.initialDeclarations
public:
//## Constructors (generated)
Node();
//## Destructor (generated)
~Node();
// Additional Public Declarations
//## begin Node.public preserve=yes
Node *next;

102
Lab6/pcircle.cpp Normal file
View File

@@ -0,0 +1,102 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: Pcircle; Pseudo Package body
//## Subsystem: Figures
//## Source file: Pcircle.cpp
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes
//## end module.includes
// Pcircle
#include "Pcircle.h"
#include "PStream.h"
#include "Point.h"
//## begin module.additionalDeclarations preserve=yes
void archive(int &i, PStream &ps);
void archive(Point& i, PStream &ps);
Persistent* Pcircle::_pobj = Persistent::addType("Pcircle", new Pcircle);
// ************** GAMMAL ******************
//IMPLEMENT_PERSISTENT(Pcircle);
//## end module.additionalDeclarations
// Class Pcircle
Pcircle::~Pcircle()
{
//## begin Pcircle::~Pcircle%.body preserve=yes
//## end Pcircle::~Pcircle%.body
}
Pcircle::Pcircle(int xPos, int yPos, int _radius, Color _color)
//## begin Pcircle::Pcircle%.hasinit preserve=no
//## end Pcircle::Pcircle%.hasinit
//## begin Pcircle::Pcircle%.initialization preserve=yes
//## end Pcircle::Pcircle%.initialization
{
//## begin Pcircle::Pcircle%.body preserve=yes
// Circle::Circle(xPos, yPos, _radius, _color);
_pobj = Persistent::addType("Pcircle", new Pcircle);
setCenter(xPos, yPos);
setRad(_radius);

106
Lab6/pcircle.h Normal file
View File

@@ -0,0 +1,106 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: Pcircle; Pseudo Package specification
//## Subsystem: Figures
//## Source file: Pcircle.h
#ifndef Pcircle_h
#define Pcircle_h 1
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes
//## end module.includes
// Circle
#include "Circle.h"
// PersFig
#include "PersFig.h"
//## begin module.additionalDeclarations preserve=yes
//## end module.additionalDeclarations
//## Class: Pcircle
//## Category: Persist
//## Subsystem: Figures
//## Persistence: Transient
//## Cardinality/Multiplicity: n
class Pcircle : public Circle, public PersFig //## Inherits: <unnamed>
//## Inherits: <unnamed>
{
//## begin Pcircle.initialDeclarations preserve=yes
//## end Pcircle.initialDeclarations
public:
//## Constructors (generated)
Pcircle(){};
Pcircle(int xPos, int yPos, int _radius, Color _color);
Pcircle(const Pcircle &src);
//## Destructor (generated)
~Pcircle();

51
Lab6/persfig.cpp Normal file
View File

@@ -0,0 +1,51 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: PersFig; Pseudo Package body
//## Subsystem: Figures
//## Source file: PersFig.cpp
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes
//## end module.includes
// PersFig
#include "PersFig.h"
//## begin module.additionalDeclarations preserve=yes
//## end module.additionalDeclarations
// Class PersFig
PersFig::PersFig()

80
Lab6/persfig.h Normal file
View File

@@ -0,0 +1,80 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: PersFig; Pseudo Package specification
//## Subsystem: Figures
//## Source file: PersFig.h
#ifndef PersFig_h
#define PersFig_h 1
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes
//## end module.includes
// Figure
#include "Figure.h"
// Persistent
#include "Prsstent.h"
//## begin module.additionalDeclarations preserve=yes
//## end module.additionalDeclarations
//## Class: PersFig
//## Category: Persist
//## Subsystem: Figures
//## Persistence: Transient
//## Cardinality/Multiplicity: n
class PersFig : public Persistent, //## Inherits: <unnamed>
virtual public Figure //## Inherits: <unnamed>
{
//## begin PersFig.initialDeclarations preserve=yes
//## end PersFig.initialDeclarations

59
Lab6/pline.cpp Normal file
View File

@@ -0,0 +1,59 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: Pline; Pseudo Package body
//## Subsystem: Figures
//## Source file: Pline.cpp
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes
//## end module.includes
// Pline
#include "Pline.h"
//## begin module.additionalDeclarations preserve=yes
//## end module.additionalDeclarations
// Class Pline
Pline::Pline()
//## begin Pline::Pline%.hasinit preserve=no
//## end Pline::Pline%.hasinit
//## begin Pline::Pline%.initialization preserve=yes
//## end Pline::Pline%.initialization

85
Lab6/pline.h Normal file
View File

@@ -0,0 +1,85 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: Pline; Pseudo Package specification
//## Subsystem: Figures
//## Source file: Pline.h
#ifndef Pline_h
#define Pline_h 1
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes
//## end module.includes
// Line
#include "Line.h"
// PersFig
#include "PersFig.h"
//## begin module.additionalDeclarations preserve=yes
//## end module.additionalDeclarations
//## Class: Pline
//## Category: Persist
//## Subsystem: Figures
//## Persistence: Transient
//## Cardinality/Multiplicity: n
class Pline : public PersFig, //## Inherits: <unnamed>
public Line //## Inherits: <unnamed>
{
//## begin Pline.initialDeclarations preserve=yes
//## end Pline.initialDeclarations
public:
//## Constructors (generated)
Pline();

30
Lab6/plist.cpp Normal file
View File

@@ -0,0 +1,30 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: pList; Pseudo Package body
//## Subsystem: Figures
//## Source file: pList.cpp
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes

48
Lab6/plist.h Normal file
View File

@@ -0,0 +1,48 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: pList; Pseudo Package specification
//## Subsystem: Figures
//## Source file: pList.h
#ifndef pList_h
#define pList_h 1
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes
//## end module.includes
// List
#include "List.h"
// Point
#include "Point.h"

83
Lab6/point.cpp Normal file
View File

@@ -0,0 +1,83 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: Point; Pseudo Package body
//## Subsystem: Figures
//## Source file: Point.cpp
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes
//## end module.includes
// Point
#include "Point.h"
//## begin module.additionalDeclarations preserve=yes
//## end module.additionalDeclarations
// Class Point
Point::Point()
//## begin Point::Point%.hasinit preserve=no
//## end Point::Point%.hasinit
//## begin Point::Point%.initialization preserve=yes
//## end Point::Point%.initialization
{
//## begin Point::Point%.body preserve=yes
//## end Point::Point%.body
}
Point::~Point()
{
//## begin Point::~Point%.body preserve=yes
//## end Point::~Point%.body

101
Lab6/point.h Normal file
View File

@@ -0,0 +1,101 @@
//## begin module.cm preserve=no
// %X% %Q% %Z% %W%
//## end module.cm
//## begin module.cp preserve=no
//## end module.cp
//## Module: Point; Pseudo Package specification
//## Subsystem: Figures
//## Source file: Point.h
#ifndef Point_h
#define Point_h 1
//## begin module.additionalIncludes preserve=no
//## end module.additionalIncludes
//## begin module.includes preserve=yes
//## end module.includes
//## begin module.additionalDeclarations preserve=yes
//## end module.additionalDeclarations
//## Class: Point
//## Category: Figures
//## Subsystem: Figures
//## Persistence: Transient
//## Cardinality/Multiplicity: n
class Point
{
//## begin Point.initialDeclarations preserve=yes
//## end Point.initialDeclarations
public:
//## Constructors (generated)
Point();
//## Destructor (generated)
~Point();
//## Other Operations (specified)
//## Operation: getx%937398664
int getx ();
//## Operation: gety%937398665
int gety ();
//## Operation: setx%937398666

Some files were not shown because too many files have changed in this diff Show More