2008. 8. 20. 15:44

c++/ 객체 지향

#include <iostream>
using std::cout;
using std::cin;
using std::endl;
/*
    아래와 같은 main함수가 수행될 수 있는 Point클래스를 디자인해보자.
    
    1. Point클래스 디자인       
       ▶ 멤버 변수
          x, y좌표
          
       ▶ 멤버 함수
          SetPoint -  입력 데이터가 0~100사이 좌표라면 멤버변수에 설정하고,
                      좌표 범위를 벗어나면 -1을 저장
          ShowPoint - 멤버변수의 저장된 좌표가 -1이 아니라면 출력하고,
                      -1이면 오류 메시지 출력
          
    2. 클래스 멤버함수는 외부정의한다.
*/

// struct  에서 class 로 넘어가면서 접근 지정자를 설정할 수 잇게 된다.
// default private !!!!!
class Point
{
public:
 //멤버변수
 int x,y;
 //멤버 함수
 void SetPoint(int _x,int _y);
 void ShowPoint();
};

void Point::SetPoint(int _x,int _y)
{
 if(_x>=0 && x<=100 && _y>=0 && _y<=100 )
 {
  x=_x;
  y=_y;
 }
 else
 {
  x=y=-1;
 }
 //0~100 사이 값이 아니라면 -1 셋팅
 
}
void Point::ShowPoint()
{
 if(x==-1)
  cout<<"잘못된좌표정보"<<endl;
 else
 {
  cout << "\n\nx 좌표 : "<<x<<endl;
  cout << "y 좌표 : "<<y<<endl;
 }
}

int main()
{
    int x, y;
    cout << "x 좌표 : ";
    cin >> x;
    cout << "y 좌표 : ";
    cin >> y; 
    Point p;            //클래스 변수 선언
    p.SetPoint(x, y);   //포인터 설정함수 호출
    p.ShowPoint();      //포인터 출력함수 호출
   
    return 0;
}

-----------------------------------------------------------------------------
/* [ 실습과제 3]            
//   UML    -->  class 를 도식화
------------------------------------
  class name
------------------------------------
--------\
attribute
--------\
-년 : int
-월 : int
-일 : int

--------\
method
--------\
+ setdate
+ getdate
------------------------------------
+ public
- private
--------------------------------------------------------------------
  아래와 같은 main함수가 수행될 수 있는 Date클래스를 디자인해보자.
    1. Date클래스 디자인       
       ▶ private 멤버 변수
          년, 월, 일
       ▶ public 멤버 함수
          SetDate - 년, 월, 일 초기화
          GetDate - 년, 월, 일 출력
    2. 파일분할하여 프로그램을 작성한다.
*/
#include<iostream>
using std::cout;
using std::cin;
using std::endl;

class Date
{
private:
 int year, month, day;

public:
 void SetDate(int _y, int _m, int _d);
 void GetDate();

};
void Date::SetDate(int _y, int _m, int _d)
{
 year = _y;
 month = _m;
 day = _d;
}
void Date::GetDate()
{
 cout <<year<<"년 "<<month<<"월 "<<day<<"일 "<<endl;
}

int main()
{
    int year, month, day;
    cout << "년 / 월 / 일 입력 (ex. 2004 3 4) : ";
    cin >> year >> month >> day;
    
    Date date;  //Date 객체생성
    date.SetDate(year, month, day); //날짜 설정함수 호출
    date.GetDate();                 //날짜 출력함수 호출
    return 0;
}