한달정도 열심히 공부하고 열심히 쉬었다.
작년에 떨어진 정보 처리 기사 실기 시험을 24년 1회 시험을 보았는데
가채점으로 충분히 합격 할거 같다.
이전에도 그렇고 필기도, 실기도 2트만에 합격하는거 보면
나는 항상 2트를 해야하나보다...
난이도는 지난번과 비슷한거 같은데 프로그래밍 문제가 많이 나와서 좋았따... ㅎ
기억에 남는건 singleton이랑 상속과 업캐스팅, 디자인패턴이랑 그리고
시험 보기 전에 친구와 나눴던
벨만포드는 죽었고(RIP).. 다익스트라는 오빠(OSPF)다 가 나와서 즐거웠다ㅋ
그 중에서 업캐스팅 부분이 제일 즐거웠다.
정처기는 C, Java, Python으로 문제가 출제되었고 업캐스팅 문제는 Java로 나와서
이걸 C++로 만들어보면 이런 느낌이었다.
#include <iostream>
using namespace std;
class parent
{
int a, b;
public :
parent(int a, int b)
{
this->a = a;
this->b = b;
}
virtual void print()
{
cout << a + b;
}
};
class child: public parent
{
int c = 5;
public:
child(int n) : parent(n, n + 1) {}
void print() override
{
cout << c * c;
}
};
int main()
{
parent *myclass = new child(2);
myclass->print();
return 0;
}
코드를 실행하면 결과는 25가 나온다.
parent 클래스의 포인터 myclass가 new child(2)을 가리키고 있기 때문에 myclass->print()를 호출하면
child 클래스에서 오버라이딩한 print() 함수가 호출 된다.
업캐스팅을 통해 parent 클래스의 포인터가 child 클래스의 객체를 가리키고 있지만
가상 함수인 print()가 child 클래스에서 오버라이딩되었기 때문에 child의 print()함수가 호출된다.
작년에는 정확히 이해하지 못하고 보기만 했던 정처기를
이번에는 뭔가 머리 속에 잘 들어와서, 역시 될 때까지 하면 되는구나 라고 깨달았다.
앞으로도 될 때까지 하자고!