주의 사항! 이 글은 제가 직접 공부하는 중에 작성되고 있습니다. 따라서 제가 이해하는 그대로의 내용이 포함됩니다. 따라서 이 글은 사실과는 다른 내용이 포함될 수 있습니다. 클래스는 객체의 생성을 목적으로 디자인합니다. 그렇다면 정말 잘 디자인된 클래스가 있을 것이고, 또 그렇지 않고 안 좋게 디자인된 클래스도 있을 것입니다. 그렇다면 좋은 클래스가 되기 위한 조건은 어떤 것들이 있을까요? 좋은 클래스가 되기 위한 최소한의 조건으로 '정보은닉'과 '캡슐화'가 있습니다. 정보은닉 먼저, 정보은닉에 대해 배워보겠습니다. 클래스를 선언할 때 멤버 변수를 private로 선언하면 정보은닉이 된 것입니다. public으로 선언하면 그렇지 않습니다. 그럼 왜 private을 사용한 정보은닉이 좋은 클래스의 조건이..
주의 사항! 이 글은 제가 직접 공부하는 중에 작성되고 있습니다. 따라서 제가 이해하는 그대로의 내용이 포함됩니다. 따라서 이 글은 사실과는 다른 내용이 포함될 수 있습니다. 지금까지는 C언어에서 C++로 자연스럽게 이동할 수 있도록 구조체를 시작으로 클래스를 설명했습니다. 그러나 이번에는 객체지향의 관점에서 전혀 다른 방법으로 클래스를 다시 한번 설명합니다. 구조체를 확장한 것이 클래스라고 인식하는 것 자체에는 문제가 없으나, 그것이 전부라고 생각하면 문제가 있기 때문입니다. 객체(Object)라고 하는 것은 '사물, 또는 대상'입니다. 연필, 나무, 사과, 선생님, 학생 등등을 객체라고 부를 수 있습니다. C++은 객체지향 언어입니다. C언어는 절차지향적 언어입니다. 객체를 지향하는 프로그래밍이란 무..
주의 사항! 이 글은 제가 직접 공부하는 중에 작성되고 있습니다. 따라서 제가 이해하는 그대로의 내용이 포함됩니다. 따라서 이 글은 사실과는 다른 내용이 포함될 수 있습니다. 앞서 C++의 구조체에 대해 배웠습니다. C++의 구조체에서는 함수를 선언하고 정의할 수 있었습니다. 그리고 C++의 구조체는 지금부터 배울 '클래스'의 일종이라고 볼 수 있다는 것도 알게 되었습니다. 그렇다면 클래스란 무엇이고, 또 C++의 구조체와 클래스가 다른 점은 무엇일까요? C++의 구조체는 struct 키워드를 사용했지만, 클래스는 다음과 같이 class키워드를 사용합니다. class Car { int fuelGauge; int curSpeed; char gameID[20]; void ShowCarState(); void..
주의 사항! 이 글은 제가 직접 공부하는 중에 작성되고 있습니다. 따라서 제가 이해하는 그대로의 내용이 포함됩니다. 따라서 이 글은 사실과는 다른 내용이 포함될 수 있습니다. C언어로 프로그램을 구현하면 구조체가 항상 따르기 마련입니다. 구조체를 이렇게 자주 활용하는 이유는 서로 연관 있는 데이터를 묶어서 관리하기 용이하게 만들기 때문입니다. C++에도 C언어의 구조체와 같은 개념이 있습니다. C++에서는 이를 '클래스'라고 부릅니다. C언어에서는 구조체의 형식을 선언하고, 이후 구조체 변수를 선언할 때 다음과 같이 struct 키워드를 사용해서 선언했습니다. //구조체의 형식 선언 struct Player { int level; char name[20]; int HP; int MP; }; int mai..