일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
- Machine Learning
- Classification
- LG Aimers
- LG Aimers 4th
- 해커톤
- 티스토리챌린지
- 지도학습
- LG
- 오블완
- regression
- 분류
- gpt
- PCA
- supervised learning
- AI
- ChatGPT
- GPT-4
- LLM
- 머신러닝
- OpenAI
- 딥러닝
- 회귀
- deep learning
- Today
- Total
목록Programming Lang (84)
SYDev

정보은닉의 이해 우리가 클래스를 디자인할 때 좋은 클래스를 만들기 위해서 필요한 조건이 있다. 여기에는 '정보은닉'과 '캡슐화'가 있다. 이는 좋은 클래스가 되기 위한 최소한의 조건인데, 이번에는 우선 정보은닉에 대해 알아보자. 정보은닉을 이해하기 위해서 클래스 하나를 예시로 들어보자. 그림판에서 도형을 그리는 프로그램을 구현하기 위해서 위치좌표를 나타내는 클래스는 필수적이다. 이 클래스의 이름은 Point이고 x, y 좌표의 범위는 각각 0이상 100이하, 그리고 좌 상단의 좌표는 [0, 0]이고 우 상단의 좌표는 [100, 100]이라고 가정해보자. 이 클래스의 멤버변수가 public으로 선언되었을 때의 문제점을 살펴보자. #include using namespace std; class Point {..
객체지향 프로그래밍의 이해 객체지향 프로그래밍이란 무엇일까? 우선 객체에 대해서 이해해보자. C++에서 의미하는 객체는 "사물 또는 대상"을 의미한다. 이러한 객체는 하나 이상의 상태와 하나 이상의 행동을 가진다는 특성이 있다. 다음과 같은 문장을 예로 들어보겠다. "나는 과일장수에게 두 개의 사과를 구매했다." 여기서 객체는 '나', '과일장수', '사과'가 있다. 이런 객체들을 이용해서 우리는 '나'라는 객체가 '과일장수'라는 객체에게서 '사과'라는 객체를 구매했다고 표현할 수도 있다. 이런식으로 현실에 존재하는 사물과 대상, 그리고 그에 따른 행동을 실체화 시키는 형태의 프로그래밍을 객체지향 프로그래밍이라고 한다. 객체지향 프로그래밍의 구현 FruitSeller 그렇다면 위 상황을 코드로 옮기기 위..
헤더파일과 인라인 함수 인라인 함수는 컴파일 과정에서 함수의 호출 문이 있는 곳에 함수의 몸체 부분이 삽입되어야 하므로, 클래스의 선언과 동일한 위치에 선언되어 컴파일러가 동시에 참조할 수 있게 해야 한다. 이와 관련된 다음 예제를 살펴보자. 파일명 : CarInline.h #ifndef __CARINLINE_H__ #define __CARINLINE_H__ #include using namespace std; namespace CAR_CONST { enum { ID_LEN = 20, MAX_SPD = 200, FUEL_STEP = 2, ACC_STEP = 10, BRK_STEP = 10 }; } class Car { private: char gamerID[CAR_CONST::ID_LEN]; int fu..
C++에서의 파일 분할 지난 글에서는 클래스를 선언, 정의하고 접근제어 지시자를 설정하는 법에 대해서 배웠다. 그렇다면 우리는 이 클래스의 선언과 정의(멤버함수의 정의)를 한 파일에 담지 않고 분할해서 배치할 필요가 있다. #include #include using namespace std; namespace CAR_CONST { enum { ID_LEN = 20, MAX_SPD = 200, FUEL_STEP = 2, ACC_STEP = 10, BRK_STEP = 10 }; } class Car { private: char gamerID[CAR_CONST::ID_LEN]; int fuelGauge; int curSpeed; public: void InitMembers(char * ID, int fuel)..
클래스(Class) vs. 구조체(Struct) Chapter 03-1에서 설명한 구조체는 클래스의 일종이다. 또한 구조체를 작성해놓은 코드에서 키워드 struct만 class로 바꿔버리면 구조체가 클래스로 바뀌어버린다. 그렇다면 이외에 클래스와 구조체는 무슨 차이점이 있을까? 접근제어 지시자(접근제어 레이블) 클래스와 구조체의 유일한 차이점은 변수 및 함수의 접근 허용범위 설정의 유무이다. 클래스는 구조체와 달리 정의하는 과정에서 클래스 내부의 변수 및 함수의 접근 허용범위를 별도로 선언해야 한다. 그리고 이런 클래스의 접근제어 지시자에는 총 3가지가 있다. public // 어디서든 접근 허용 protected // 상속관계에 놓여있을 때, 유도 클래스에서의 접근 허용 private // 클래스 내부..
C++에서의 구조체 변수 선언 구조체는 연관 있는 데이터를 묶을 수 있는 문법적 장치이다. 이런 구조체가 어떤 상황에 필요할까? 우리는 하나의 객체에 대하여 여러가지 변수를 선언해야할 때가 있다. 예를 들어서 하나의 자동차가 있다면 이에 대해서 소유주, 연료량, 현재속도 등의 정보가 필요하다. 이런 객체의 정보를 그룹화되지 않은 독립변수로 선언한다면 새로운 객체가 등장할 때마다 똑같은 정보를 매번 새로 만들어야 하는 불편함이 생긴다. 이런 불편함을 덜기 위해서 c++에서는 하나 이상의 변수를 묶어서 새로운 자료형을 정의하는 구조체(struct)를 이용할 수 있다. 구조체는 다음과 같이 정의할 수 있다. struct Car { char gamerID[ID_LEN]; //소유자ID int fuelGauge;..
C++에서 C언어의 표준함수 호출 C언어의 라이브러리에 있는 함수들을 이용하기 위해서는 .h를 생략하고 앞에 c를 붙이면 된다. #include -> #include #include -> #include #include -> #include #include -> #include 이와 관련된 다음 예제를 살펴보자. #include #include #include using namespace std; int main(void) { char str1[] ="Result"; char str2[30]; strcpy(str2,str1); printf("%s: %f \n", str1, sin(0.14)); printf("%s: %f \n", str2, abs(-1.25)); return 0; } Result: 0.1..
동적 메모리 할당 & 정적 메모리 할당 동적 메모리 할당 : 동적 메모리 할당은 컴퓨터 프로그래밍에서 실행 시간 동안 사용할 메모리 공간을 할당하는 것이다. 정적 메모리 할당 : 정적 메모리 할당은 메모리 할당 방법 중 하나로, 프로그램이 실행될 때 이미 메모리의 크기가 결정된다. 정적 메모리 할당의 예시는 다음과 같다. char examples[10]; 위처럼 코드를 입력하면 char 자료형 10개가 나란히 선언되고, examples 배열에는 10개의 자료형만 들어갈 수 있다. 동적 메모리 할당을 하는 이유? 정적 메모리 할당을 하면 기억공간이 낭비될 경우가 생긴다. 예를 들어서 위에서 선언한 examples에는 10글자를 넣을 수 있는데 이에 미치지 못하는 글자수를 가진 문자형을 넣는다면 그만큼 메모..