본문 바로가기
  • 쓸쓸한 개발자의 공부방

전체 글49

[python] pandas - iloc 예제 [python] pandas - iloc 예제 pandas 의 dataFrame에서 iloc 는 매우 자주 사용합니다. 처음 접하는 경우 생소하고 사용법이 익숙치 않아 내용을 알아둘 필요가 있습니다. 한걸음씩 우리 전진해 보자구요~ iloc에 대해 설명과 더불어 예시로 사용법을 알아보도록 하겠습니다. iloc iloc은 인덱스의 위치를 통해 데이터를 선택하는 인덱싱 방법 중 하나입니다. iloc은 "integer location"의 약자로, 정수 기반의 위치 인덱싱을 지원합니다. iloc은 [] 연산자를 사용하여 데이터프레임의 특정 행과 열을 선택할 수 있습니다. iloc의 인자로는 행과 열을 선택하기 위한 정수 인덱스, 정수 범위, 또는 불리언 배열을 사용할 수 있습니다. 예를 들어, df.iloc[0.. 2023. 3. 13.
[C++] 디자인 패턴 : 변하는 것을 분리하는 방법 2가지 [C++] 디자인 패턴 : 변하는 것을 분리하는 방법 2가지 클래스를 정의하고 상속 받아서 사용하는 경우 재사용성을 고려하는 디자인 패턴에 대해 알아야 한다. 변하지 않는 코드(전체 흐름) 안에 있는 변해야 하는 부분(정책)은 분리 하는 것이 좋다. 1) template method : 변하는 것을 가상함수로 (상속 기반) 변해야 하는 부분 (아래에서 validate 함수)을 별도의 가상 함수로 분리한다. 변하는 것 (validate)을 가상 함수로 분리할 때의 장점 - validation 정책을 변경하고 싶다면 Edit의 파생 클래스를 만들어서 validate() 가상 함수를 재정의하면 된다. template method 장단점 상속 기반은 유연성이 떨어지는 편, 재사용이 크게 필요없는 경우 명확한 편.. 2022. 1. 30.
[C++] 디자인패턴 : uscasting [C++] 디자인패턴 : uscasting upcasting 기반 클래스 타입의 포인터(참조)로 파생 클래스 객체를 가리킬 수 있다. class Animal { int age; }; class Dog : public Animal { int color; }; int main() { Dog d; Dog* p1 = &d; // ok. double* p2 = &d; // error. Animal* p3 = &d; // ok. } Dog 형태의 d 는 age, color를 가지고 있다. Animal p3에를 메모리를 찾아가면 age 존재하기 때문에 문제가 없다. 폴더와 파일의 관계를 생각해볼 수 있다. 폴더는 폴더 안에 폴더와 파일을 가질 수 있다. 그래서 폴더와 파일을 동시에 가질 수 있는 기반 객체 Item을.. 2022. 1. 28.
[C++] 디자인패턴 : protected constructor C++ 디자인 패턴 : protected constructor (protected생성자) 생성자의 정확한 호출 순서를 이해해야 한다. 1. Dog의 생성자가 먼저 호출된다. (Dog d; 에 의해 호출됨) 2. Dog의 생성자 안에서 기반 클래스인 Animal의 생성자를 호출한다. class Animal { protected: Animal() {} }; class Dog : public Animal { public: Dog() {} // Dog() : Animal() {} }; int main() { Animal a; // error Dog d; // ok. } 생성자를 protected에 만드는 이유? - 자기 자신(Animal)을 만들 수는 없다. - 하지만 파생 클래스(Dog)의 객체는 만들 수 있.. 2022. 1. 27.
[C++] Design Patterns (디자인 패턴) - GoF [C++] Design patterns (디자인 패턴) - GoF 총 23가지의 패턴을 소개하고 있습니다. 개발자들끼리 대화하고 업무의 효율을 높여주는 디자인 패턴은 개발자에게 필수적입니다. 위의 왼쪽 책은 1995년 발간된 디자인 패턴 책입니다. 기존의 존재하는 코딩 방식에 이름을 부여해 책으로 펼쳐냈습니다. 위의 오른쪽 책은 한글 개정판으로 2015년 출판된 책입니다. 부제목은 "재사용성을 지닌 객체지향 소프트웨어의 핵심 요소" (Elements of Reusable Object-Oriented Software) 라고 되어 있네요. 다른 국적의 저자 4명이 함께 책을 썼습니다. 에릭 감마, 리처드 헬름, 랄프 존슨, 존 블리시디스 그래서 4명의 갱이라고 해서 GoF (Gang of Four) 의 디자.. 2022. 1. 26.
[C++] exception (예외처리) exception c언어에서 함수가 실패하면 함수의 반환 값(retrun value)을 사용해서 실패했음을 알린다. - 반환 값과 실패하는 것이 명확히 분리되지 않는 단점이 있다. - 정상적인 실행흐름과 오류처리의 코드가 분리되어 있지 않는 단점이 있다. - 중요하고 심각한 오류라도 오류를 무시할 수 있는 단점이 있다. (오동작에 대한 버그 처리에 어려움) 객체지향 언어들이 사용하는 오류 처리가 바로 exception 처리 - 함수가 실패하면 throw 키워드를 사용해서 예외를 던진다. - 던져진 예외를 처리하지 않으면 프로그램은 종료된다. catch문은 여러 개를 만들 수 있다. catch( ... )은 모든 종류의 예외를 잡을 수 있다. 해당 구문은 맨 나중에만 넣을 수 있다. #include int.. 2022. 1. 10.
[C++] cout, endl 원리, operator<< 재정의 cout 원리 cout 은 ostream 타입의 객체이다. 모든 primitive 타입에 대해서 operator 2022. 1. 2.
[C++] 연산자 재정의 (operator overloading) 연산자 재정의 (operator overloading) 연산자 재정의란 +, -, * 의 연산자를 함수로 만들 수 있다. operator+, operator-, operator* #include class Point { int x; int y; public: Point( int a = 0, int b = 0) : x(a), y(b) {} }; int main() { int n = 1 + 2; Point p1(1,1); Point p2(2,2); Point p3 = p1 + p2; // operator+(p1, p2) // operator+(Point, Point) // p1.operator+(p2) => operator+(Point) ¸âšöÇÔźö } a+b를 컴파일러가 해석하는 방법 a,b 모두 pr.. 2022. 1. 1.
[C++] 다중 상속 (multiple inheritance) 다중 상속 (multiple inheritance) 다중 상속은 클래스가 2개 이상의 기반 클래스로 부터 상속 되는 것이다. - C++, Lisp, Curl 다중 상속 지원 - Java, C# 다중 상속 미지원 문제점 : 서로 다른 기반 클래스에 동일 이름의 멤버가 있을 때 이름 충돌, 다이아몬드 형태의 상속 class InputFile { public: void read() {} void open() {} }; class OutputFile { public: void write(){} void open() {} }; class IOFile : public InputFile, public OutputFile // 다중 상속 지원 { }; int main() { IOFile file; file.open().. 2021. 12. 31.
[C++] 상속과 RTTI 상속과 RTTI 함수가 인자로 기반 클래스의 포인터를 받으면 - 기반 클래스 뿐 아니라 모든 파생 클래스를 전달 받을 수 있다. 기반 클래스 포인터로 파생 클래스의 고유 멤버에 접근 할 수 없다. - 파생클래스의 고유 멤버에 접근하려면 파생 클래스 타입으로 캐스팅 (다운 캐스팅, downcasting) 해야 한다. #include #include class Animal {}; class Dog : public Animal { public: int color; }; void foo(Animal* p) { // p가 Dog 이라면 p->color = 10; // error } int main() { Animal a; foo(&a); Dog d; foo(&d); } 아래와 같이 p는 Animal 클래스 형태로.. 2021. 12. 30.