21
edits
Changes
Created page with '{{OOP344 Index | 20133}} <big>'''''Under construdtion'''''</big> =Objective= Your objective at this stage is to create series of core classes designed to interact with the user…'
{{OOP344 Index | 20133}}
<big>'''''Under construdtion'''''</big>
=Objective=
Your objective at this stage is to create series of core classes designed to interact with the user. These '''Core Classes''' then can be used in development of any interactive application.
Please note that the class definitions here are minimum requirement for the Core Classes and you are free to add any enhancements or features you find useful. However make sure that you discuss these enhancements with your team and professor to make sure they are feasible before implementation.
It is highly recommended to develop the classes in the order they are stated here. You must create your own tester programs for each class (if possible); However, close to due date of each release, a tester program may be provided to help you verify the functionality of your classes. If tester programs are provided, then executables of the test programs will be available on matrix to show you how it is supposed to run.
Also object your professor's implementation of all the classes are available in your class notes repository. Please note the following:
* these implementations include a header file for each class and an object file for each class and platform
* these are for you to test your own implementation in case you need to have access to another class and they are not developed yet.
* like any other implementation, these implementations could be buggy
=Tips=
* [[GIT for OOP344 Projects| Guide for using Github]]
Start by creating mock-up classes (class declaration and definition with empty methods that only compiles and don't do anything).
Each class MUST have its own header file to hold its declaration and "cpp" file to hold its implementation. To make sure you do not do circular includes follow these simple guidelines:
* Add recompilation safeguards to all your header files.
* Always use forward declaration if possible instead of including a class header-file.
* Use includes only in files in which the actual header file code is used.
* '''Avoid "just in case" includes.'''
=CIO General Header file (ciogh.h)=
The general header file holds the common setting and definition between all the Core Classes. Review this header file at each stage of the project for changes.
<big><syntaxhighlight lang="cpp">
#ifndef ___CIOGH_H__
#define ___CIOGH_H__
namespace cio{
#ifndef _CRT_SECURE_NO_DEPRECATE
#define _CRT_SECURE_NO_DEPRECATE
#endif
#ifndef _CRT_SECURE_NO_WARNINGS
#define _CRT_SECURE_NO_WARNINGS
#endif
#define C_INITIAL_NO_FIELDS 50
#define C_DIALOG_EXPANSION_SIZE 20
#define C_BUTTON_HIT 1
#define C_MAX_LINE_CHARS (1024u)
#define C_REFRESH -2
#define C_FULL_FRAME -1
#define C_NO_FRAME 0
#define C_BORDER_CHARS "/-\\|/-\\|"
enum CDirection {centre, left, right, up, down};
enum MessageStatus{ClearMessage,SetMessage};
#ifdef NO_HELPFUNC
# undef NO_HELPFUNC
#endif
#define NO_HELPFUNC ((void(*)(MessageStatus, CDialog&))(0))
#ifdef NO_VALDFUNC
# undef NO_VALDFUNC
#endif
#define NO_VALDFUNC ((bool(*)(const char*, CDialog&))(0))
#define C_MAX_LINE_CHARS (1024u)
#define C_INITIAL_NUM_OF_LINES (100u)
}
#endif
</syntaxhighlight></big>
=CIO header file (cio.h)=
This header file is to be included to any program using the cio classes. Essentially any program using cio should be able to fully use the cio framework by adding the following 2 lines:
<big><syntaxhighlight lang="cpp">
#include "cio.h"
using namespace cio;
</syntaxhighlight></big>
Initially start with this as your cio.h and add what is needed as you develop your classes.
<big><syntaxhighlight lang="cpp">
#ifndef ___CIO_H__
#define ___CIO_H__
#include "ciogh.h"
#include "console.h"
// more to be added during the development of the project
#endif
</syntaxhighlight></big>
=File Names=
Use the following rules to create filenames for your class.
*Each class MUST have its own header file and cpp file for implementation
*Use the class name for the name of the file but make sure it is all '''''lowercase'''''.
*:For example '''CFrame''' class should have '''cframe.h''' and '''cframe.cpp''' files for its implementation.
=CIO class hierarchy=
<big><pre>
CFrame
|
|---CDialog
|
|
|---CField
|
|-------- CLabel
|
|
|-------- CButton
|
|
|-------- CLineEdit
| |
| |-------CValEdit
|
|-------- CText
|
|
|-------- CCheckMark
|
|
|-------- CCheckList
|
|
|-------- CMenuItem
|
|
|-------- CMenu
</pre></big>
=Issues, Releases and Due Dates=
Here you will see the new parts of the project releases, their due date and descriptions .
<big>'''''Under construdtion'''''</big>
=Objective=
Your objective at this stage is to create series of core classes designed to interact with the user. These '''Core Classes''' then can be used in development of any interactive application.
Please note that the class definitions here are minimum requirement for the Core Classes and you are free to add any enhancements or features you find useful. However make sure that you discuss these enhancements with your team and professor to make sure they are feasible before implementation.
It is highly recommended to develop the classes in the order they are stated here. You must create your own tester programs for each class (if possible); However, close to due date of each release, a tester program may be provided to help you verify the functionality of your classes. If tester programs are provided, then executables of the test programs will be available on matrix to show you how it is supposed to run.
Also object your professor's implementation of all the classes are available in your class notes repository. Please note the following:
* these implementations include a header file for each class and an object file for each class and platform
* these are for you to test your own implementation in case you need to have access to another class and they are not developed yet.
* like any other implementation, these implementations could be buggy
=Tips=
* [[GIT for OOP344 Projects| Guide for using Github]]
Start by creating mock-up classes (class declaration and definition with empty methods that only compiles and don't do anything).
Each class MUST have its own header file to hold its declaration and "cpp" file to hold its implementation. To make sure you do not do circular includes follow these simple guidelines:
* Add recompilation safeguards to all your header files.
* Always use forward declaration if possible instead of including a class header-file.
* Use includes only in files in which the actual header file code is used.
* '''Avoid "just in case" includes.'''
=CIO General Header file (ciogh.h)=
The general header file holds the common setting and definition between all the Core Classes. Review this header file at each stage of the project for changes.
<big><syntaxhighlight lang="cpp">
#ifndef ___CIOGH_H__
#define ___CIOGH_H__
namespace cio{
#ifndef _CRT_SECURE_NO_DEPRECATE
#define _CRT_SECURE_NO_DEPRECATE
#endif
#ifndef _CRT_SECURE_NO_WARNINGS
#define _CRT_SECURE_NO_WARNINGS
#endif
#define C_INITIAL_NO_FIELDS 50
#define C_DIALOG_EXPANSION_SIZE 20
#define C_BUTTON_HIT 1
#define C_MAX_LINE_CHARS (1024u)
#define C_REFRESH -2
#define C_FULL_FRAME -1
#define C_NO_FRAME 0
#define C_BORDER_CHARS "/-\\|/-\\|"
enum CDirection {centre, left, right, up, down};
enum MessageStatus{ClearMessage,SetMessage};
#ifdef NO_HELPFUNC
# undef NO_HELPFUNC
#endif
#define NO_HELPFUNC ((void(*)(MessageStatus, CDialog&))(0))
#ifdef NO_VALDFUNC
# undef NO_VALDFUNC
#endif
#define NO_VALDFUNC ((bool(*)(const char*, CDialog&))(0))
#define C_MAX_LINE_CHARS (1024u)
#define C_INITIAL_NUM_OF_LINES (100u)
}
#endif
</syntaxhighlight></big>
=CIO header file (cio.h)=
This header file is to be included to any program using the cio classes. Essentially any program using cio should be able to fully use the cio framework by adding the following 2 lines:
<big><syntaxhighlight lang="cpp">
#include "cio.h"
using namespace cio;
</syntaxhighlight></big>
Initially start with this as your cio.h and add what is needed as you develop your classes.
<big><syntaxhighlight lang="cpp">
#ifndef ___CIO_H__
#define ___CIO_H__
#include "ciogh.h"
#include "console.h"
// more to be added during the development of the project
#endif
</syntaxhighlight></big>
=File Names=
Use the following rules to create filenames for your class.
*Each class MUST have its own header file and cpp file for implementation
*Use the class name for the name of the file but make sure it is all '''''lowercase'''''.
*:For example '''CFrame''' class should have '''cframe.h''' and '''cframe.cpp''' files for its implementation.
=CIO class hierarchy=
<big><pre>
CFrame
|
|---CDialog
|
|
|---CField
|
|-------- CLabel
|
|
|-------- CButton
|
|
|-------- CLineEdit
| |
| |-------CValEdit
|
|-------- CText
|
|
|-------- CCheckMark
|
|
|-------- CCheckList
|
|
|-------- CMenuItem
|
|
|-------- CMenu
</pre></big>
=Issues, Releases and Due Dates=
Here you will see the new parts of the project releases, their due date and descriptions .