(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

****클래스와 객체******
클래스는 실생활을 표현하기 위한 사용자 정의 자료형이고 ,클래스 변수는 객체이다.
붕어빵 틀은 클래스이고 붕어빵은 객체이다. 객체는 속성과 기능을 가지고 있다.
객체는 선언을 의미하고, 인스턴스는 선언한 객체가 메모리에 존재하는 것.

댓글

이 블로그의 인기 게시물

(ElasticSearch) 결과에서 순서 정렬

(네트워크)폴링방식 vs 롱 폴링방식

(18장) WebSocekt과 STOMP를 사용하여 메시징하기