장르: 애초에 역경을 딛고 이룩하는 숭고한 사랑이란 없다. 그 역경 자체가 사랑이다.
프로그램 특징: 그 곳에서 살아남는 사랑이 어떤 모습으로 걸어오는지 기다려 보고 싶다.
-
[Class] Method1016분Method a.k.a. Interface Function a.k.a. Member FunctionMethod default formstatic return_type class name :: function (arguments) const;this pointer현재 설계 중인 제품의 전화 번호는 미래에 결정된다. 그런데 제작자는 아직 결정되지 않은 전화 번호를 이용해야 하는 코드를 작성해야 할 수 있다.현재 시점에서 미래의 전화 번호에 접근하는 방법이 this pointer 입니다.int main(){ USERDATA user = { , , print}; user.Print(&user); // cpp user.Print(); return 0;}클래스 객체(인스턴스) user가 ..
-
[cpp] Class1016분C의 절차지향에서 객체 지향으로 인식을 전환해야 합니다. 인식 전환의 방법을 나를 남보듯, 손님 대하듯이 - 제작자 마인드와 사용자 마인드를 분리하는 것입니다. (코드를 남보기 쉽게 짠다는 뜻) 왜냐면 6개월 후의 나는 코드를 이해할 수 없기 때문입니다.클래스란 C 구조체에서 확정된 변수, 객체, 함수를 포함한 하나의 틀 이다. C의 구조체는 함수를 포함할 수 없지만 C++는 가능하다.- 객체란 변수들과 관련된 메서드들이 모여서 만든 하나의 꾸러미다.- 메서드란 함수 형태로 클래스의 실제 동작과 상태를 구현하는 핵심 요소다.| 메서드랑 함수는 뭐가 다르고, 변수랑 함수가 모인 객체는 클래스랑 뭐가 다른가요? 왜 용어를 이렇게 여러 개 사용하시나요?객체 지향의 패러다임을 설명하기 위해 세분화된 것입니다.•..
-
[Polymorphism] Overloading1015분cpp 에서는 함수 원형이 달라지면 이름이 같아도 다른 함수가 된다. c와 중요한 차이점이다. # Overloading함수 원형(반환 형식(type), 호출 규칙, 함수 이름, Argument 구성) 중 함수 이름을 제외하고 다르게 변경할 수 있다. 그러나 반환 형식이나 호출 규칙만 다른 경우는 문법에 맞지 않다. 즉, 함수를 이름은 같고 내용은 다르게 재정의할 수 있다. - int Add(int a, int b) {} - double Add(double a, double b) {}- int Add(int a, int b, int c) {} 호출자 관점에서 호출되는 함수는 컴파일러에 의해 자동으로 결정된다. -> 모호성void TestFunc(int a){ std::cout 위 코드는 컴파일할 수 있는..
-
Linear/Polynomial Regression1013분기계학습 선형, 다항 회귀 모델 실습하기 # Linear Regression Model 2차원 평면 상 데이터에 대해 해당 데이터를 잘 표현할 수 있는 선형 회귀 모델1. Loading the dataset# Generate 2-dimensionalX = [rand() * i * 0.5 - 20 for i in range(0, 100)]y = [x ** 3 * 0.002 - x ** 2 * 0.005 + x * 0.003 + rand() * 5 for x in X] 2. 데이터셋을 trainset & testset로 나누고 분포 시각화# Data random shuffleidx = list(range(length(x)))random.shuffle(idx)# Split data for train/test ..
-
[금융전략을 위한 머신러닝] NLP1010분# 자연어 처리: 파이썬 패키지1. NLTK가장 유명한 nlp 파이썬 라이브러리. 학습된 영어용 토크나이저 punkt 를 다운해 사용한다. 2. TextBlobNLTK 위에 빌드되는 테스트 처리 단순화 라이브러리3. spaCy단일 목적에 하나의 알고리즘만 제시하여 선택할 필요 없이 생산성에 집중할 수 있다. # 이론 및 개념텍스트 데이터를 전처리하고 텍스트를 통계적 추론 알고리즘에 입력하기 전에 예측 특성으로 표현 # 전처리1. 토큰화텍스트를 토큰이라고 하는 의미 있는 세그먼트로 분할하는 작업.> 세그먼트: 문장의 구성요소 (단어, 구두점, 숫자 등)- NLTK Punkt 2. 불용어 제거모델링에 값을 거의 제공하지 않는 매우 일반적인 단어를 어휘에서 제외''' from nltk.corpus impor..
-
지도 학습: 회귀(시계열 모델)0924분학습 목표: 시계열 모델 개념, 금융 데이터에서 시계열 모델로 미래 가치 예측하는 방법, 시계열 모델과 지도 회귀 모델의 비교, 시계열 예측에 사용할 수 있는 딥러닝 모델(LSTM) - 다양한 시계열 및 머신러닝 모델의 적용과 비교 - 모델 및 결과 해석, 선형 대 비선형 모델의 잠재적 과적합과 과소적합의 직관적 이해 - 머신러닝 모델에 사용할 데이터 준비와 변환 - 모델 성능 향상을 위한 특성 선택과 엔지니어링 - 모델 성능 향상을 위한 알고리즘 튜닝, 예측을 위한 ARIMA (시계열 모델) 이해, 구현, 튜닝 - LSTM 같은 딥러닝 기반 모델이 시계열 예측에 어떻게 사용되는 지 이해 목표와 예측 변수 간의 관계를 모델링한다예측 변수란 금융에서 회귀 기반 지도 학습의 활용 사례- 투자 기회 예측: 자..
-
메모리 구조0922분코드 - CPU가 실행할 코드가 기계어 상태로 저장 > Read-Only데이터 - static, 전역 변수 저장 스택 - 자료 구조: 프로세스의 메모리 공간 관리힙 - 배열 등 크기가 정해지지 않은 메모리 사용 시 반드시 해제해주어야 leak이 일어나지 않는다. [ 높은 주소 ][0xFFFF]| Stack | 스택은 컴파일 타임에 크기가 결정되며 지역 변수, 매개 변수를 저장하는 공간이다.스택 영역은 메모리의 높은 주소에서 낮은 주소로 할당되기 때문에 LILO 방식으로 가장 나중에 들어온 데이터가 먼저 인출된다. - 데이터를 PUSH 저장하고 POP으로 인출한다.스택 영역이 힙 영역을 침범하는 상황을 스택 오버플로우라고 하는데, 낮은 주소(나중 데이터)가 힙 영역을 침범되는 상황을 생..
-
[SQLD] 자료 사이트 정리0822분sql 실습 사이트FREE AI-Enhanced Online SQL Server Compiler - For learning & practice (sqlfiddle.com) FREE AI-Enhanced Online SQL Server Compiler - For learning & practice sqlfiddle.com 질 좋은 자료 많은 티스토리SQLD 기출문제 및 요약 모음 (2022 추가) (tistory.com) SQLD 기출문제 및 요약 모음 (2022 추가)안녕하세요. 개발하는 땅콩입니다. SQLD 요약본을 올린 지 벌써 몇 년이 됐네요.제가 공부할때 참고용으로 올렸던 SQLD 요약들이 이렇게 유명해질지 몰랐습니다. 이러한 여러분의 조회에 힘입어selgii.tistory.com 노랭이 개정판 ..
-
트리 알고리즘0818분5.1. Decision Tree로지스틱 회귀로 와인 분류하기결정 트리이해하기 쉬운 결정 트리 모델5.2. 교차 검증과 그리드 서치검증 세트교차 검증하이퍼파라미터 튜닝최적의 모델을 위한 하이퍼파라미터 탐색5.3. 트리의 앙상블정형 데이터와 비정형 데이터랜덤 포레스트엑스트라 트리그레이디언트 부스팅히스토그램 기반 그레디언트 부스팅앙상블 학습을 통한 성능 향상info() > 누락된 값이 있으면 어떻게 하나요?결측치는 훈련 세트의 mean으로 채우거나 버리거나, 최선은 둘 다 해봐야 압니다. **훈련 세트의 통계값으로 테스트 세트를 변환한다는 사실을 잊지 마세요**> 훈련 세트의 평균값으로 테스트 세트의 누락값을 채워야 합니다. ??? 같은 통계 세트로 특성 변환하는 거지 훈련 세트가 영향을 주는 건 아니지 않..
Method a.k.a. Interface Function a.k.a. Member Function
Method default form
static return_type class name :: function (arguments) const;
this pointer
현재 설계 중인 제품의 전화 번호는 미래에 결정된다. 그런데 제작자는 아직 결정되지 않은 전화 번호를 이용해야 하는 코드를 작성해야 할 수 있다.
현재 시점에서 미래의 전화 번호에 접근하는 방법이 this pointer 입니다.
int main()
{
USERDATA user = { , , print};
user.Print(&user);
// cpp
user.Print();
return 0;
}
클래스 객체(인스턴스) user가 선언되는 시점은 클래스를 정의하고 난 나중 일이다. Print()에서 user 구조체 주소를 넘겨 받아 데이터를 반환하려면 user의 주소가 필요한데 아직 주소를 모른다. cpp의 매개변수 칸에도 눈에 보이지 않을 뿐 &user를 전달하고 있다. 이렇게 첫 번째 argument로 전달된 instance address는 this 포인터(지역 변수)에 저장된다.
class abc
{
public:
abc(int param) : idx(param) {};
void print() { cout << this->abc::idx << endl;}
private:
int idx;
};
int main(){
abc a(1), b(2);
a.print();
1 이 나온다.
명확히 말하면
- a.print() 에 사실은 &a 매개변수를 넘겨준다.
- public: void print(abc * pdata) { abc * this = pdata; )를 위에 가지고 있어
-
- this = & a
this -> 를 이렇게 이용하는 것이다.
| 메서드 함수 내부에서 실제 클래스 인스턴스의 주소를 가리키는 포인터이다.
const
const는 안전 장치이자 배려이자 작성자 수준을 가늠하는 사용자 친화 코드 이자 미래이다. int Getdata() const {} 상수형 메서드로 정의하면 멤버 변수의 값을 write (변경) 수 없고, const 메서드 내에서 const가 아닌 함수를 호출할 수 없다.
추가 내용: 상수화 하는 방법은 Class *\this 를 const Class *\this 로 변경하는 것이다.
static
cpp에서 전역 변수를 사용하는 것은 좋은 선택이 아니다. 이를 해결하기 위해 전역 변수와 동일한 동작을 하지만 클래스 멤버로 소속을 가지는 static을 이용한다.
- 사용자 코드에서 클래스 메서드를 사용하려면 무조건 인스턴스 선언하거나 new 연산으로 동적 인스턴스를 생성하고 멤버 접근 연산자로 호출해야 한다.
정적 멤버 함수는 인스턴스 선언 없이 직접 호출할 수 있다. 그러나 *\this 사용이 불가능하며 선언과 정의를 반드시. 반듯이. 분리해야 한다.
class Class
{
public:
Class(int nparam) : mdata(nparam) { mCount++;}
int Getdata() { return mdata;};
void resetCount() {mCount = 0;};
// static method definition & declaration
static int GetCount() { return mCount; };
private:
int mdata;
// static method definition
static int mCount;
};
// static method declaration
int Class::mCount = 0;
int main(int argc, char* argc[])
{
Class a(10), b(0);
cout << a.Getdata() << endl; // static
cout << Class::GetCount() << endl; // access without an instance
b.resetCount();
cout << b.GetCount() << endl;
return 0;
}
결과값은
10
2
0
정적 멤버 함수는 인스턴스 및 멤버 접근 연산자(resetCount)를 이용해도 되고 클래스 이름::범위 지정 연산자(public)을 이용해 인스턴스 없이 직접 호출도 가능하다.
'Computer Science > Object Oriented Programming' 카테고리의 다른 글
[JAVA] 이것이 자바다(3판) 5장 9번 답안 (1) | 2025.04.15 |
---|---|
[cpp] 복사 생성자 (4) | 2024.11.13 |
[Template] Class template (0) | 2024.10.18 |
[cpp] Class (1) | 2024.10.16 |
[Polymorphism] Overloading (0) | 2024.10.15 |