[C++] 객체 - 객체지향 첫시작

목차

  1. 프로그래밍 언어에서 객체란
  2. 객체 선언과 사용과정 with 코드

1. 객체란?

프로그래밍 언어에서 객체 또는 오브젝트는 클래스에서 정의한 것을 토대로 메모리(실제 저장공간)에 할당된 것으로 프로그램에서 사용되는 데이터 또는 식별자에 의해 참조되는 공간을 의미합니다.
그 메모리에는 여러 변수, 자료구조, 함수 등이 들어 갈 수 있으며, 객체는 선언 전까지(메모리 할당전까지) 존재하지 않습니다.

라고 위키백과에서 말해주고 있습니다.

 

저는 이런 설명보다는 처음 프로그래밍을 배우는 시점에서의 설명을 원하시는 분들을 위해 풀어서 설명해보겠습니다.

지금까지 작성한 코드들은 그저 변수와 함수로 코드로 티키타카하며 써왔습니다. 하지만 이제는 현실과 비슷한 시점으로 프로그래밍을 하게 됩니다.

객체: 말그대로 작용의 대상이 되는 것, 우리가 눈에 보이는 모든 것 입니다.
사람을 볼때 키, 몸무게, 성별, 나이 등 그 사람의 특징들을 보게 됩니다. 이 특징들을 "속성" 이라고 하겠습니다.
예를 들어 자동차라는 객체를 만들때, 자동차를 만들기 위한 재료와 특징들이 속성이 됩니다.
자동차의 차종, 타이어, 연식, 연비 같은것들이 속성이 될 수 있습니다.

 


2. 객체 선언과 사용

저는 비주얼스튜디오에서 객체지향을 코딩할때에는 항상 객체의 선언문과 할당문은 나누어서 코딩합니다.

이제부터는 객체의 선언을 .h로 헤더파일에 선언하고 객체를 실질적으로 쓸곳만 소스파일에 작성합니다.

 

student.h - 학생객체 헤더파일

#pragma once
#include <string>
#include <iostream>

using namespace std;

class student {
private:
	string name;
	int ID;
	int grade;

public:

	void setName(string name) {
		this->name = name;
	}
	void setID(int id) {
		this->ID = id;
	}
	void setGrade(int grade) {
		this->grade = grade;
	}



	void print_info() {
		cout << "이름: " << name <<"\n학번: "<<ID<<"\n학년: "<<grade <<"\n";
	}
};

헤더파일만 봐도 이게 뭐지 싶으실겁니다.

class는 뭐고 private에 public은 뭐고 this->는 왜 있지 싶을겁니다.

이 내용들을 추후에 다른 글로 작성하도록 하겠습니다.

 

객체는 class 이름{ 속성, 속성 ,메소드}; 로 사용됩니다.

 

학생의 속성으로는 이름, 학번, 학년을 넣어주었습니다.

메소드는 속성들의 값을 설정해주고 속성들의 내용을 출력하는 메소드를 넣어주었습니다.

 

메인함수.cpp

#include "Student.h"

int main(void) {
	student student;

	student.setName("홍길동");
	student.setID(1234567);
	student.setGrade(3);

	student.print_info();
	return 0;
}

 

순서대로 설명해보겠습니다.

1. #include "Student.h"

- Student.h 의 이름을 가진 헤더파일을 참조하겠다. 라는 것입니다. 덕분에 <iostream>도 헤더파일에 선언함으로서 메인의 코드가 간결해질 수 있습니다. 아마 c++ 글 초반부에서 헤더파일에만 작성해야 한다고 작성했던 것 같습니다.

 

2. Student student;

- Student라는 객체를 student라는 변수이름으로 메모리를 할당하겠다.

 

3. stduent.setName, setID, setGrade()

- 객체변수에 객체에 있는 함수로 "홍길동"이란 이름을 설정하고 ,1234567이라는 학번을 주고, 3학년이라고 설정하겠다 라는 뜻입니다.

 

4. student.print_info()

-객체에 존재하는 메소드인 void형 print_info()를 호출하겠다 라는 의미입니다.

Student.h에 존재하는 Student객체의 print_info()를 Main에서 설정해준 값으로 잘 출력된 모습입니다.


원래는 객체에 좀 더 구체적으로 설명드려야 하지만 public는 뭐고, private는뭐고 this는 뭐고 갑자기 알아야 할게 많아지니 우선 객체를 어떻게 쓰는지만 먼저 작성해보았습니다.

 

도움이 되셨길 바랍니다. 이상입니다.

 

'C++ > 객체지향' 카테고리의 다른 글

[C++] 상속과 다형성  (0) 2023.11.05
[C++] 생성자와 소멸자  (0) 2023.11.04
[C++] 접근지정자 - (public/private/protected)  (0) 2023.10.27