트리, 이진 탐색 트리 (Binary Search Tree)
탐색 시간 평균: $O(log N)$ 최악: $O(N)$ 요소 추가/삭제 평균: $O(log N)$ 최악: $O(N)$ 트리 (Tree) 트리(Tree)형 자료구조는 비선형 계층 관계(부모-자식 관계) 자료구조입니다. 각 노드(Node)는 방향이 ...
탐색 시간 평균: $O(log N)$ 최악: $O(N)$ 요소 추가/삭제 평균: $O(log N)$ 최악: $O(N)$ 트리 (Tree) 트리(Tree)형 자료구조는 비선형 계층 관계(부모-자식 관계) 자료구조입니다. 각 노드(Node)는 방향이 ...
C++에서 클래스는 객체 지향 프로그래밍의 핵심 요소로, 데이터와 이 데이터를 조작하는 함수를 하나의 모듈로 묶는 역할을 합니다. C++에서 클래스는 변수(멤버 데이터) 와 함수(멤버 함수) 를 포함하는 사용자 정의 타입입니다. 클래스의 기본 구조 클래스는 class 키워드를 사용하여 정의하며, 일반적으로 다음과 같은 형태를 가집니다. clas...
디폴트 매개변수(default parameters)는 프로그래밍에서 함수를 선언할 때 매개변수에 미리 기본값을 설정하는 것으로써, 함수 호출 시 해당 매개변수를 생략할 수 있게 해주는 기능입니다. 이는 함수의 사용성을 향상시키고 코드의 간결성을 높여주며, 여러 함수 오버로드를 만드는 것보다 간편할 수 있습니다. 디폴트 매개변수는 주로 함수 선언 시...
얕은 복사 (Shallow Copy) 얕은 복사는 객체의 모든 필드 값을 그대로 복사하는 것입니다. 하지만, 주소를 참조하는 필드가 존재한다면, 복사된 객체와 원본 객체는 같은 메모리 주소를 참조하게 됩니다. 즉, 얕은 복사는 참조 대상을 새롭게 복사하지 않으므로, 원본과 복사본이 동일한 대상을 참조하게 됩니다. 결과적으로, 하나의 객체에서 포...
객체지향 프로그래밍(Object-Oriented Programming, OOP)은 프로그래밍 패러다임 중 하나로, 데이터와 그 데이터를 처리하는 함수(메서드) 를 하나의 ‘객체’ 로 묶어서 프로그래밍하는 방식입니다. 이 패러다임은 여러 개의 독립된 객체들이 상호작용하면서 동작하는 개발 방법을 제시하며, 하나의 객체가 다른 객체의 데이터에 직접 접근하...
다형성(Polymorphism)은 객체지향 프로그래밍(OOP)의 핵심적인 개념 중 하나로, ‘여러 형태(Poly 많은, morph 형태)’를 가질 수 있는 특성을 말합니다. 이는 하나의 객체가 다양한 타입으로 행동할 수 있도록 하며, 이로 인해 코드의 재사용성과 확장성이 증가하고 유지보수가 용이해집니다. 타입의 다형성 타입의 다형성은 한 객체가 ...
객체지향 프로그래밍(OOP)에서 추상화(Abstraction)란, 복잡한 시스템을 이해하고 관리하기 쉽게 단순화된 개념이나 의미있는 표현으로 정의하는 과정을 말합니다. 이 과정을 통해, 우리는 필수적인 특성만을 강조하고 불필요한 세부사항은 숨김으로써, 보다 체계적이고 효율적인 소프트웨어 설계를 가능하게 합니다. 추상화란? 추상화(Abstracti...
객체지향 프로그래밍(OOP)의 상속성(Inheritance)은 기존 클래스의 특성과 동작을 새로운 클래스가 물려받아 재사용하고 확장할 수 있는 특징을 말합니다. 이때, 기존 클래스를 ‘기본 클래스’ 혹은 ‘부모 클래스’라 하고, 물려받은 클래스를 ‘파생 클래스’ 혹은 ‘자식 클래스’라고 부릅니다. 절차적 프로그래밍의 한계 객체지향 프로그래밍은 기...
캡슐화(Encapsulation)는 객체지향 프로그래밍(OOP)의 중요한 개념 중 하나로, 데이터와 그 데이터를 처리하는 메서드를 하나의 단위로 묶고, 실제 구현 내용 일부를 내부에 감추어 은닉합니다. 사실 이게 핵심이자 전부입니다. “이건 나도 알고 있던건데? 이게 객체지향만의 중요한 특징이라고?” 혹은 “이건 당연한거 아니야?” 라고 생각할 수...
의존 역전 원칙은 다음 두 가지의 내용을 담고 있습니다. 고수준 모듈(High-level Module)은 저수준 모듈(Low-level Module)에 의존해서는 안 되며, 둘 다 추상화에 의존해야 한다. 추상화는 세부 사항에 의존해서는 안 되며, 세부 사항은 추상화에 의존해야 한다. 조금 어렵게 느껴질 수 있지만, 쉽게 말하자면, 두 ...