(C++)7장 구조체 및 클래스 객체
1. C++ 구조체
#include<iostream>
using namespace std;
#define NAME_LEN 20
#define SEX_LEN 10
#define JOB_LEN 20
#define CHARACTER_LEN 20
struct Chulsoo
{
char name[NAME_LEN];
char sex[SEX_LEN];
char job[JOB_LEN];
char character[CHARACTER_LEN];
int age;
bool marriageStatus;
void introduce()
{
cout<<name<<endl;
cout<<sex<<endl;
cout<<job<<endl;
cout<<character<<endl;
cout<<"결혼 여부"<<(marriageStatus?"YES":"NO")<<endl;
}
}
int main(void)
{
Chulsoo chulsoo={"철수","영희","작가","diligent",32,true};
chulsoo.introduce();
return 0;
}
*****추상화란?
실생활의 상황을 표현하는 자료형을 사용하는 것은 추상화라는 개념의 출발이다.
즉 사물을 사실적으로 표현하는 개념(구상화)이 아니라 불필요한 부분은 제거하고 공통된 특징만을 추출하여 간결하고 이해하기 쉽게 만드는 작업
*****데이터 은닉?
객체지향 프로그래밍은 데이터 은닉(data hiding)과 캡슐화를 지향한다. 데이터은닉은 클래스안의 속성과 기능을 선택적으로 숨기는 것을 의미한다.
예제)
class Chulsoo
{
public:
void constructor(char* name, char* sex, char *job, char* character,int age,bool marriageStatus)
{
strcpy_s(this->name,name);
strcpy_s(this->sex,sex);
strcpy_s(this->job,job);
strcpy_s(this->character,character);
this->age=age;
this->marriageStatus=marriageStatus;
}
}
2.3 멤버 접근 지정자: public, protected,private
*public: 클래스 내부 영역이든 외부영역이든 상관없이 클래스 멤버에 접근 할 수 있도록한다.
* private: 클래스 내부 영역에서만 클래스 멤버에 접근 할 수 있다.
*protected: 기본적으로 클래스 내부 영역에서만 클래스 멤버에 접근 할 수 있지만, 클래스간의 상속관계에서 하위클래스에서도 상위클래스 멤버에 접근할 수 있도록 한다.
****구조체와 클래스의 차이점******
C++구조체에서 멤버변수와 멤버함수는 기본적으로 public접근 지정자의 영향을 받는다.
C++클래스에서 멤버변수와 멤버함수는 기본적으로 private 접근 지정자의 영향을 받는다.
즉, 데이터 은닉을 포함하는 캡슐화를 지향하는 객체지향 프로그래밍인 C++에서는 구조체를 클래스 처럼 쓰기에는 무리가 있다.
2.4 자신을 가리키는 포인터: this
****클래스와 객체******
클래스는 실생활을 표현하기 위한 사용자 정의 자료형이고 ,클래스 변수는 객체이다.
붕어빵 틀은 클래스이고 붕어빵은 객체이다. 객체는 속성과 기능을 가지고 있다.
객체는 선언을 의미하고, 인스턴스는 선언한 객체가 메모리에 존재하는 것.
#include<iostream>
using namespace std;
#define NAME_LEN 20
#define SEX_LEN 10
#define JOB_LEN 20
#define CHARACTER_LEN 20
struct Chulsoo
{
char name[NAME_LEN];
char sex[SEX_LEN];
char job[JOB_LEN];
char character[CHARACTER_LEN];
int age;
bool marriageStatus;
void introduce()
{
cout<<name<<endl;
cout<<sex<<endl;
cout<<job<<endl;
cout<<character<<endl;
cout<<"결혼 여부"<<(marriageStatus?"YES":"NO")<<endl;
}
}
int main(void)
{
Chulsoo chulsoo={"철수","영희","작가","diligent",32,true};
chulsoo.introduce();
return 0;
}
*****추상화란?
실생활의 상황을 표현하는 자료형을 사용하는 것은 추상화라는 개념의 출발이다.
즉 사물을 사실적으로 표현하는 개념(구상화)이 아니라 불필요한 부분은 제거하고 공통된 특징만을 추출하여 간결하고 이해하기 쉽게 만드는 작업
*****데이터 은닉?
객체지향 프로그래밍은 데이터 은닉(data hiding)과 캡슐화를 지향한다. 데이터은닉은 클래스안의 속성과 기능을 선택적으로 숨기는 것을 의미한다.
예제)
class Chulsoo
{
public:
void constructor(char* name, char* sex, char *job, char* character,int age,bool marriageStatus)
{
strcpy_s(this->name,name);
strcpy_s(this->sex,sex);
strcpy_s(this->job,job);
strcpy_s(this->character,character);
this->age=age;
this->marriageStatus=marriageStatus;
}
}
2.3 멤버 접근 지정자: public, protected,private
*public: 클래스 내부 영역이든 외부영역이든 상관없이 클래스 멤버에 접근 할 수 있도록한다.
* private: 클래스 내부 영역에서만 클래스 멤버에 접근 할 수 있다.
*protected: 기본적으로 클래스 내부 영역에서만 클래스 멤버에 접근 할 수 있지만, 클래스간의 상속관계에서 하위클래스에서도 상위클래스 멤버에 접근할 수 있도록 한다.
****구조체와 클래스의 차이점******
C++구조체에서 멤버변수와 멤버함수는 기본적으로 public접근 지정자의 영향을 받는다.
C++클래스에서 멤버변수와 멤버함수는 기본적으로 private 접근 지정자의 영향을 받는다.
즉, 데이터 은닉을 포함하는 캡슐화를 지향하는 객체지향 프로그래밍인 C++에서는 구조체를 클래스 처럼 쓰기에는 무리가 있다.
2.4 자신을 가리키는 포인터: this
****클래스와 객체******
클래스는 실생활을 표현하기 위한 사용자 정의 자료형이고 ,클래스 변수는 객체이다.
붕어빵 틀은 클래스이고 붕어빵은 객체이다. 객체는 속성과 기능을 가지고 있다.
객체는 선언을 의미하고, 인스턴스는 선언한 객체가 메모리에 존재하는 것.
댓글
댓글 쓰기