Basic(88)
-
다형성
1. 다형성(polymorphism) 다형성이란 상위 클래스의 타입의 참조변수로 하위클래스의 객체를 참조하는 것을 말한다. ※ 추상클래스나 인터페이스도 상위클래스에 해당한다. 추상클래스를 상속한 클래스의 객체나 인터페이스를 구현한 클래스의 객체를 상위 추상클래스 형이나 인터페이스 형 변수로 참조 가능하다. 추상클래스와 인터페이스는 뒤에 단원에서 설명한다. class Person { int x; } class Student extends Person { int y; } Person p = new Student(); // 다형성 // p가 참조할 수 있는 멤버는 Student가 다 가지고 있기에 문제가 없다. Student s = new Person(); // X compile error! // s가 참조할..
2014.11.09 -
포함? 상속?
1. 클래스의 재활용 기존의 클래스를 재활용하는 방법에는 "상속"과 "포함"이 있다. 사람이라는 클래스가 있다고 하자. 현재 우리가 필요로 하는 클래스는 학생이라는 클래스인데 학생클래스는 사람클래스가 가지는 모든 멤버를 가져야 한다고 한다면 복사를 해서 사용한다. 여기서 코드의 중복이 생겨나고 사람클래스의 변경이 생기면 학생 클래스도 수정해야 하므로 유지보수에 비용이 들어갈 수 있다. ===> 상속과 포함을 사용함으로써 이런 코드의 중복을 방지하고 코드를 변경하고 싶으면 한 군데만 변경하면 나머지 모든 클래스의 코드가 변경되니 프로그램의 생산성이나 유지보수에 도움이 됨. Person { int age; } ① 포함 Student클래스는 멤버 변수로 Person데이타 변수를 가진다. class Studen..
2014.11.09 -
뮤텍스(Mutex) vs 세마포어(Semaphore)
동기화 리눅스 커널은 동기화와 독점적인 접근을 허용하기 위해 다양한 방법을 사용하고 있다. 여러 프로세스가 동일한 자원을 조작할 경우에 세마포어를 이용하는 것이 편리하다. 멀티 프로세서 환경에서 여러 CPU가 동시에 참조하는 테이블을 보호하기 위해서는 스핀락(spin lock)을 이용하는 것이 가장 일반적이다. 뮤텍스(Mutex)란? MUTual EXclusion 으로 상호배제라고도 한다. Critical Section을 가진 스레드들의 Runnig Time이 서로 겹치지 않게 각각 단독으로 실행되게 하는 기술이다. 다중 프로세스들의 공유 리소스에 대한 접근을 조율하기 위해 locking과 unlocking을 사용한다. 즉, 쉽게 말하면 뮤텍스 객체를 두 스레드가 동시에 사용할 수 없다는 의미이다. 세마..
2014.11.07 -
오버로드? 오버라이딩?
오버로드 (overload) 비슷한 일을 하는 함수를 같은 함수이름으로 인자의 갯수를 다르게 하거나, 타입을 다르게 함으로서 구현하는 방법. 단, 리턴형은 같아도 달라도 무관하다. 오버로딩된 메소드들은 서로 무관한 함수 취급한다. 오버로딩된 경우 적합한 메소드를 찾아서 실행하는 순서 1. 메소드의 이름 2. 메소드의 인자의 개수 3. 각 인자들의 데이터 형 (data type) 1 class CParent 2 { 3 public : 4 void func(int); //오버로딩 5 void func(float, int); //오버로딩 6 void func(int, int); //오버로딩 7 }; 오버라이드(override) 하위 클래스에서 상위 클래스의 함수의 동작을 변경하기 위해 상위 클래스의 함수를 재..
2014.11.06