개요
2학년에 들어선 후 첫 자료구조 수업은 0. 기초사항 이라는 제목으로 진행되었습니다.
말 그대로 완전히 기초부터 짚고 들어가는 수업이였던 것 같네요.
'프로그래밍 언어란 무엇인가' 부터 객체지향 프로그래밍, C++과 C#의 차이점 등등
앞으로 효율적이고 간단하게 코드를 짤 수 있으려면 이 과목을 잘 들어야 한다는 느낌이 들었습니다.
그렇기 때문에 앞으로 블로그에서 자료구조 수업에 대해 정리를 계속해서 해나갈 것 같습니다.
C++과 C#의 차이점?
아직 C++을 다뤄본적은 없지만 C++은 사용자가 메모리를 직접 할당하고 해제하는 식이고
C#은 사용자 대신 GC(Garbage Collector)가 메모리를 자동으로 관리해줍니다.
그렇기 때문에 C#보다 C++이 안정성이 떨어지는 대신 효율적인 메모리 할당으로 C++은 C#에 비해 속도가 빠른편이죠.
사용 환경과 사용 언어에 따른 속도 비교 그래프
출처 (ResearchGate)
객체지향 프로그래밍이란?
객체지향 프로그래밍이란, 여러 데이터들을 메서드(속성)과 변수 등을 가진 '객체(Object)'로 추상화시켜 서로 상호작용을 통해 로직을 구성하는 프로그래밍 방법입니다.
가장 흔한 방법은 객체의 속성을 클래스(Class) 라는 틀에 저장하고
그 클래스를 기반으로 객체를 만들어내서 사용합니다.
자판기에 돈을 넣었을때를 가정하고 절차지향과 객체지향의 차이점을 설명해보자면
절차지향은 데이터를 중심으로
if(받은 돈 >= 가격)
{
제품과잔돈제공();
고객의돈 -= 받은 돈;
자판기의돈 += 받은 돈;
고객의제품++;
자판기의제품--;
}
else
{
print("돈 부족");
돈반환();
}
이런식으로 구성되고
객체지향은
고객.돈넣기();
자판기.돈받기();
if(자판기.받은돈 >= 자판기.가격)
{
자판기.제품과잔돈제공();
}
else
{
print("돈 부족");
자판기.돈반환();
}
이런 느낌으로... 구성된다고 하는데...
사실 절차지향 프로그래밍을 별로 해보질 않아서 정확한 예시가 아닐수도..
마치는 말
솔직히 머리가 아파요.
뇌로는 이해한 것 같아도 말이나 글로 써서 이해한걸 증명하라고 하면 몇배는 어려운 것 같습니다.
아무튼 글 마치겠습니다.
'개발 > C++' 카테고리의 다른 글
자료구조 | C++ | 클래스 (1) | 2024.04.05 |
---|---|
자료구조/게임 프로그래밍 | C++ | 함수, 포인터 (1) | 2024.03.28 |
게임 프로그래밍 | C++ | 랜덤 (2) | 2024.03.22 |
자료구조 | C++ | 문자열 (3) | 2024.03.17 |
자료구조 | C++ | 기본 개념 (1) | 2024.03.07 |