본문 바로가기

IT/Programming Language

(15)
[Java] 추상클래스와 인터페이스 추상클래스와 인터페이스 추상 클래스와 인터페이스는 모두 추상화를 통해 구현을 강제하는 방법이지만, 차이가 있음 추상 클래스특정 클래스의 공통적인 특성과 행동을 정의하는데 사용상속받는 자식 클래스가 반드시 구현해야 하는 메소드를 추상 메소드로 선언함으로써, 일관된 구현을 강제할 수 있음하나 이상의 추상 메소드를 포함해야 함 (이외 변수 및 일반 메서드도 포함 가능)인스턴스를 생성할 수 없음 (상속을 통해 자식 클래스에서 구현해야 함)추상 클래스를 상속받은 하위 클래스에서는 추상 메서드를 반드시 구현해야 하지만, 일반 메서드는 구현할 필요 없음다중 상속 불가abstract class 클래스이름 { ... abstract 반환타입 메소드이름(); ...} 인터페이스인터페이스는 클래스가 구현해야..
[Java] 동일성(identity)과 동등성(equality) 동일성(identity)과 동등성(equality)동일성 (identity)비교 대상의 두 객체의 메모리 주소가 같음을 의미하는 것동일성은 동일하다는 뜻으로 두 개의 객체가 완전히 같은 경우를 의미자바에서 동일성은 비교연산자 == 로 확인Number number1 = new Number(1);Number number2 = number1;System.out.println(number1 == number2); // true동등성(equality)동등성은 비교 대상의 두 객체가 논리적으로 동일한 값을 나타내고 있는지를 검사동등성에서 두 객체의 메모리 주소는 중요하지 않음.즉, 동일함은 동등함을 보장하지만, 반대로 동등함은 동일함을 보장하지 않음자바에서 동등성을 비교하기 위해 equals 와 hashCode 를..
[C++/STL] Iterator Iterator포인터와 비슷하게 컨테이너에 저장된 원소들을 참조할 때 사용되는 객체  Iterator OperationOperation설명distance(v.begin(), it)두 iterator 사이 거리 반환advance(it, 3)it를 다음 3번째 iterator로 이동new_it = next(it, 3)new_it에 it 다음 3번째 iterator 저장new_it = prev(it, 3)new_it에 it 이전 3번째 iterator 저장  Random Access Iterator의 사칙 연산Random Access Iterator는 +, - 연산을 통해 이동이 가능하며 O(1)로 수행된다.(다른 iterator는 loop 돌며 O(n)으로 수행 )advance(it, 3) → it += 3..
[C++/STL] Operator Overloading & Functor 개요STL을 사용하게 되면 컨테이너 내 요소들의 순서 또는 key를 비교하기 위한 기준이 필요하다.일반 primitive type의 경우 기본 연산자 (less, greater, equal_to 등)을 제공해서 생략할 수 있지만custom data type을 사용하거나 sort, unique 기준이 일반적이지 않은 경우연산자 오버로딩(Operator Overloading) 또는 함수 객체(Function Object, Functor)를 사용해서 기준을 잡아줘야 한다. Function Object (Functor)클래스의 함수 호출 연산자 (function call operator)를 오버로딩하면 그 클래스의 객체를 함수 포인터처럼 사용할 수 있다.이렇게 사용하는 객체를 함수 객체 (Function Obj..
[C++/STL] Algorithm Library STL Algorithm Library주로 컨테이너 반복자(배열 주소 값)로 다양한 작업을 수행하도록 도와준다.반복자 없이 값으로만 수행되는 함수도 있다.function을 인자로 설정해주기도 한다.range는 항상 [first, last)이다. (last 미포함)함수의 형태는 대부분 아래와 같다.함수 형태 대상 func(iterator first, iterator last, T value)find, count, lower_bound, upper_boundfunc(iterator first, iterator last)sort, max_element, min_elementfunc(iterator first, iterator last, function f)for_each, find_if, count_if, s..
[C++/STL] STL Container 구성 및 특징 ContainerSTL 컨테이너는 데이터를 저장하고 관리하는데 사용되는 객체로,여러 유형의 컨테이너가 있으며 각 컨테이너는 특정한 요구 사항에 맞게 설계 됨 구성 요약시퀀스 컨테이너arrayvectordequelistforward_list컨테이너 어댑터stackqueuepriority_queue연관 컨테이너setmultisetmapmultimap비순차 컨테이너unordered_setunordered_multisetunordered_mapunordered_multimap 시퀀스 컨테이너데이터를 선형적으로 저장하여, 사용자가 데이터를 원하는 순서대로 저장하고 접근할 수 있음array고정된 크기의 배열을 제공하며, 크기는 컴파일 타임에 결정되어야 함C스타일 배열과 비슷하나, STL 컨테이너들이 가지는 여러 편..
[C++/STL] STL이란 STL이란Standard Template Library여러 자료 구조, 함수, 알고리즘 등을 쓰기 쉽게 정형화해서 라이브러리화 한 것알고리즘, 컨테이너, 함수자, 반복자 4가지로 구성 구성 요소STL Container : 컨테이너흔히 자료 구조라 하며, 데이터를 저장하는 객체STL 컨테이너는 클래스 템플릿 형태로 제공동적으로 크기가 변경 가능한 컨테이너 (vector, list, deque)와 고정된 크기를 가지는 컨테이너 (array) 등 다양한 형태가 있음표준 연속 컨테이너인 vector, deque, list 등이 있고, 표준 연관 컨테이너인 set, multiset, map, multimap 등이 있음 STL Iterator : 반복자컨테이너의 원소들을 순회하거나 접근하는 방법을 제공하는 객체반복..