E D R , A S I H C RSS

Full text search for "상속"

상속


Search BackLinks only
Display context of search results
Case-sensitive searching
  • MoreEffectiveC++/Miscellany . . . . 23 matches
         ''program in future tense''는, 변화의 수용하고, 준비한다. 라이브러에 추가될 새로운 함수, 앞으로 일어날 새로운 오버로딩(overloading)을 알고, 잠재적으로 모호성을 가진 함수들의 결과를 예측한다. 새로운 클래스가 상속 계층에 추가될 것을 알고, 이러한 가능성에 대하여 준비한다. 새로운 어플리케이션에서 코드가 쓰이고, 그래서 새로운 목적으로 함수가 호출되고, 그런 함수들이 정확히 동작을 유지한다. 프로그래머들이 유지 보수를 할때, 일반적으로 원래의 개발자의 영역이 아닌, 유지 보수의 몫을 안다. 그러므로, 다른 사람에 의해서 소프트웨어는 이해, 수정, 발전의 관점에서 구현하고 디자인된다.
          * 만약 다중 상속 상태에서 어떠한 파괴자가 있다면, 모든 기본 클래스가 아마 가상 파괴자(virtual destructor)가 되어야 할것이다.
         '''두번째''' 문제는 진짜 프로그래머들이 이와 같은 코드를 쓴다는 것이다. 특별히 C++로 전향한 C프로그래머들에 경험에서 보면, 포인터를 통한 객체의 할당은 그리 흔하지 않은것도 아니다. 그러한 경우는 이성적인 생각으로 취한 할당같이 보인다. Item 32의 촛점중, 상속 관계 상에서 우리의 클래스는 정확히 사용하기 쉽고, 부정확하게 사용하기 어렵게 해야 한다고 언급했다.
         이러한 문제를 Animal::operator=를 보호(protected)영역으로 설정해서 해결할수 있다. 하지만 Animal 포인터를 통하여 Lizard와 Chicken객체의 부분적인 할당을 막는 것에 비하여, Animal 객체 간의 할당 문제는 난제이다. 추상 클래스로서 Animal 은 초기화 할수 없다. 그래서 Animal 간의 할당은 허용될 필요가 없다. 물론 새로운 문제를 수반한다. 왜냐하면 우리의 기본적인 디자인에서 이 시스템에서는 Animal을 객체로서 필요가 있어서 지원한 것 이기 때문이다. 이러한 쉬운 방법은 어려운 부분이 둘러싸고 있는 형국이다. 대신에 Animal 을 추상화 시키는 클래스를 새로 만들어 버리는 건 어떨까? AbstractAnimal 같이 말이다. 대신에 이제 이들을 Animal, Lizard, Chicken 객체가 상속을 받고 객체로서 활용 되는 것이다. 그렇게 되면 우리는 AbstractAnimal 이라는 추상 클래스에서 Concrete 클래스를 유도한다. 이러한 계층도를 준비하면 다음과 같다.
         당신은 아마도 데이터 멤버를 가지는 Animal 클래스 같이, Concrete 기초 클래스를 기반으로 전체하고 기초 클래스의 포인터를 통해서 할당에 대한 논의라는걸 주목할 것이다. 그렇다면, 만약 아무런 데이터가 없다면, 의도에 부합하는, 문제가 안될것이 없고, 좀더 생각해 보면, 그것은 자료가 없는 concrete 클래스가 두번 상속 되어도 안전할꺼라고 의견을 펼지 모른다.
         만약 당신이 C1,C2 두개의 concrete 클래스를 가지고 있고, C2는 C1을 public 상속 했을때 당신은 아마도 두 클래스의 관계를 A라는 새로운 클래스를 생성해서, 다시 구조를 재편하는 과정을 부담없이 할수 있다.
         이러한 변환 과정에서 처음의 값은 추상 추상 클래스 A 를 확인하게 만든다. C1과 C2는 아마 보통 몇가지를 가지고 있다.:그것은 그들이 public 상속이 되는 이유이다. 이 변환으로 당신은 반드시 그 가지고있는 어떻것을 확인해야 한다. 게다가 C++에서 클래스로 모호한 부분에 대하여 명확하게 해주어야 한다. 그것은 보통 추상화(abstraction)가 추구해야 하는 것이고 잘 정의된 멤버 함수와 확실한 문법으로 구현된다.
         그 목표는 유용한 추상화와 추상화를 추상 클래스로 존재하게 강제해 버리 도록 구분한다. 그렇지만 당신은 어떻게 유용한 추상화를 분간 할것인가? 누가 그 추상화가 미래에도 유용한지 알려주는가? 누가 어디로 부터 상속되는지 예상할수 있는가?
         자, 나는 어떻게 미래에 상속 관계에 대한 사용을 예측할수 없다. 그러나 나는 이거 하나는 알고 있다.:하나의 목적에서 추상화에 대한 필요는 비슷할 것이라는것, 그러나 더 많은 목적으로 추상화에 대한 필요성은 보통 중요하다. 즉, 유용한 추상화는 하나 이상의 용도(목적)에서 필요성이 있다. 그것은 그렇나 추상화가 그들에 목적에 부합하는 클래스와 올바르게 쓰인다는 것과, 유도된 클래스에서도 또한 유용하다는 걸 의미한다. (작성자주:의역)
         여기에는 정확한 답을 내릴수 없다. 그렇지만 경험상으로 그것은 우리가 완전히 이해하기 힘든 개념을 잘 구현한 훌륭한 클래스의 디자인에는 결코 가까워 질수 없을 것으로 보인다. 만약 당신이 패킷을 위해서 추상 클래스를 만들었다면, 오직 단일 패킷 형태로 제한하는 디자인 이후에 어떻게 옳바른 디자인을 할수 있겠는가? 기억해 봐라, 만약 당신이 추상 클래스로 디자인해서 미래에 이를 상속한 클래스들로 디자인상 별 변화 없이 제작될수 있다는 면, 이런 추상 클래스가 주는 장점을 얻는다. (만약 변화가 필요하다면 모든 클라이언트에게 재 컴파일을 요구해야 한다. 그리고 아무것도 얻지 못한다.)
         당신이 하려는 훌륭한 추상 패킷 클래스 디자인은 당신이 다양한 목적에 수많은 다른 패킷을 훌륭하게 만들어 보지 않고서는 할수 없다. 이번 경우에서 이런 제한된 경험을 제시하는 것은 나의 충고가 패킷에 대한 정의가 아니라, 추후 오직 concrete 패킷 클래스로 부터 상속의 필요성이 있을때에, 패킷의 추가를 용이하게 하기 위한 것이다.
         내가 여기에 제시한 변환은 추상 클래스의 필요성을 확인하기 위한 하나의 방법이지 유일한 방법은 아니다. 추상 클래스의 지원이 요구되는 수많은 경우들이 있다.;객체 지향에 분석은 책들을 만들 만큼 다양하다. 추상 클래스에 관한 소개는 이 경우 만이 아니라 자신 스스로 다른 concrete 클래스에 대한 상속 관계를 설계하면서 깨달아라. 그렇지만, 보통 두개의 concrete 클래스 public 상속으로 연결 지어 놓는것은 새로운 추상 클래스의 필요성을 의미한다.
         종종 다음의 문제로, 심사 숙고해서 만들어논 평화로운 이론을 가혹한 현실이 망친다. 서드 파티 C++ 라이브러리는 폭팔적으로 증가하고, 당신은 읽을수 밖에 없는 라이브러리 상의 concrete클래스로 부터 상속받은 concrete 클래스의 생성을 원할때 어떻게 할것인가?
          * 당신이 필요로 하는 것에 가장 가까운 추상 클래스를 상속 계층 높은 부분에서 찾아봐라, 그리고 나서 그 클래스에서 상속하라. 물론 정확하지 않은 클래스 일지도 모른다. 그렇더라도, 아마 당신은 확장하고자 하는 기능을 가지는 concrete 클래스의 구현의 노력 해야 할것이다.
          * 당신의 새로운 클래스를 당신이 상속 받고자 하는것과 비슷한 클래스 라이브리의 한부분에 구현해라. 예를 들어서 당신이 데이터 멤버로서 라이브러리 클래스의 객체를 가지고 싶을때, 당신의 새로운 클래스에 라이브러리 클래스의 인터페이스를 재정의 해라.
         class SpecialWindow { // 이것은 Window로 부터 상속되기 원하는 클래스
          // "상속 받은" 가상 함수의 새로운 구현
          이러한 전략은 당신이 의존하고 있는 라이브러리 벤더의 클래스가 업데이트 될때 마다 당신의 클래스를 업데이트를 할 준비가 되어 있는걸 요구한다. 또한 라이브러리 클래스상에서 가상 함수의 재정의 능력을 제거를 요구하기도 한다. 왜냐하면 당신은 상속 받기 전까지 가상 함수를 재정의 할수가 없다.
         C++에서 구조체의 설계 규칙이 C에서의 그것과 일치하기 때문에 양 언어가 각자의 컴파일러로 같은 규칙으로 구조체가 설계되어 있다고 가정 할수 있다. 그러한 구조체는 안전하게 C++과 C사이에 교환될수 있다. 만약 당신이 ''비가상 함수''를 C++ 버전의 구조체에 추가 했다면, 그것의 메모리 모양(layout)은 바뀌지 않는다. 그래서 비가상 함수를 포함하는 구조체(혹은 클래스)의 객체(object)는 오직 멤버 함수가 없는 구조체 C로 최적화 될것이다. 가상 함수를 더하는 것은 논할 가치가 없다. 왜냐하면 가상 함수를 클래스에 추가하는 것은 메모리의 배열에 다른 모습을 보인다. (Item24참고) 다른 구조체(혹은 클래스)로 부터 상속 받은 구조체는 보통 그것의 메모리상 모습이 바뀐다. 그래서 기본(base) 구조체(혹은 클래스)에 의한 구조체 역시 C함수의 지원이 미흡하다.
         해당 함수는 배열의 적용이 int에 한정되어 있어서 상속성이 없다. 그래서 그것을 템플릿(template)으로 만들어 본다.
  • HolubOnPatterns/밑줄긋기 . . . . 22 matches
          * 1980년대 초 C언어가 왕이었을 무렵 상속은 하나의 디자인 패턴이었다.
          * 지금은 이디엄이 되어 누구나 아무 생각 없이 사용하는 상속이 패턴이었다는 사실도 재미있고 C언어가 왕이었다는 표현도 재미있네요. - [김수경]
          * 요즘은 상속과 인터페이스 같은 기능이 많은 언어에 내장되어 있다. 이들은 이디엄이 된 것이다.
          * 무책임한 상속은 오히려 변화의 크기를 증가시키기도 합니다. 이디엄이라고 반드시 옳은것은 아닌듯ㅋㅋ - [서지혜]
          * 프로그래밍 프로세스는 디자인에서 시작하며 상속, 캡슐화, 디자인 패턴 등을 이용하고 디자은의 실체인 컴퓨터 프로그램을 내놓는다.
          * 디자인 패턴은 크게 보면 구현 상속(extends)을 인터페이스 상속(implements)으로 바꾸는 방법을 설명하고 있다.
          * C++을 배우고 자바를 배우면 익숙한 구현 상속을 많이 사용하게 되지. C++에도 인터페이스의 개념이 있지만 시작부터 구체 클래스를 만드는 습관때문에 거의 쓰지 않았었다. - [서지혜]
          * 구현 상속이 도대체 왜 나쁠까? 명시적으로 구체 클래스의 이름을 사용하면 특정 구현에 종속되는데 이는 결과적으로 수정을 필요 이상으로 어렵게 만든다.
          * 나는 구현 상속을 사용할 때 get/set을 만드는 것도 귀찮아 protected를 썼었는데, 마치 나에게 하는 말 같군. 기분이 안좋아진다... - [서지혜]
          * 구현 상속을 사용하면 기반 클래스를 수정할 때마다 파생 클래스들이 제대로 작동하는지를 테스트해야 한다.
         ==== 다중 상속 ====
          * 구현 상속이 '나쁘다면' 분명 다중 구현 상속은 더 나쁘다.
          * 구현 상속 기반 아키텍처는 깨지기 쉬운 기반 클래스 문제 외에도 너무 많은 클래스를 구현해 주어야 하는 문제를 갖고있다.
          * 프로그램을 정상적으로 동작하게 할 수 있는 꼼수를 발견했다면 뭐 그런대로 괜찮다. 하지만 내 주장의 핵심은 '''애초에 상속으로 인한 문제가 발생하지 않도록 했어야 한다는 것이다.'''
          * 그렇군. 정규화 계층구조는 위에 있는 코드를 아래에서 써서 만드는거니까 상속을 이용하는게 편하다는거군? 예제 없나 근데? - [김준석]
          * 클래스 상속 기반 계층구조일때는 유용할듯 하지만. 우리가 원하는 extends를 제거하는 동적 디자인 시에는 그리 유용한 도구가 아닌것 같다. 'is-a'가 얼마나 날 잘못된 길로 이끌었던가! - [김준석]
          * 단순한 클래스 계층 구조는 복잡한 계층 구조보다 만들고 유지 보수하기 쉽다. 또한 인터페이스를 이용하여 구현 상속이 하는 것과 같은 작업을 수행할 수도 있다.
          * 음.. 확실히 이 책은 구현상속의 장점에대해 충분히 알아들어야지 extends의 장점에 대해 이해할수 있을것 같다. 이런경우가 어떤때인지 모르니까 - [김준석]
          * 상속한 메소드에서 예외를 던지지 말라. 즉 리스코프 대체 원칙(LSP)를 지키라. LSP를 어기면 다형성을 이용한 코딩을 할 수 없고, 결과적으로 개방 폐쇄의 원칙(OCP)도 지킬 수 없게 된다.
          * 상속을 이용하여 이벤트 통지를 하면 이벤트를 발생시키는 객체와 이벤트를 처리하는 객체 사이에 결합도가 매우 높아진다.
  • ProgrammingWithInterface . . . . 19 matches
         책에서는 말한다. 많은 개발자들이 [[OOP#s-1.2|인터페이스]] 보다는 [[OOP#s-1.2|상속]]을 사용하여 개발한다고... 그렇다! 사실이다. 나도 여지껏 인터페이스로 무장한 코드를 보지 못했다.
         언제나 개발을 할 때 '어라~ 같은 일 하는데? 이거 Base 클래스 만들어서 위로 올려야 겠는데?' 일말의 틈도 주지 않고 실행한다. 다형성을 사용하는 코드를 생성한다. '와우~! 한결 깔끔해 졌는걸?' 하지만 오산이었다. 시간이 지나서 먼가 추가할 동작들이 생겼다. 이제 고치기 시작한다. Base 클래스 부터... 고치고 나니 컴파일이 되지 않는다. 코드 수정의 여파가 하위 클래스들에게 까지 미친다. 정말 미친다. 이런 상속을 통한 계층 구조는 상위 클래스와 하위 클래스의 결합도를 높여준다. 지나 치게 크게..! 동감하지 않는가? 하나를 고쳤는데 수정할 꺼리가 마구 쏟아지는 상황을...
         상속을 사용하는 상황을 국한 시켜야 할 것같다. 상위 클래스의 기능을 100%로 사용하면서 추가적인 기능을 필요로 하는 객체가 필요할 때! .. 이런 상황일 때는 상속을 사용해도 후풍이 두렵지 않을 것 같다. GoF의 책이나 다른 DP의 책들은 항상 말한다. 상속 보다는 인터페이스를 통해 다형성을 사용하라고... 그 이유를 이제야 알 것같다. 동감하지 않는가? Base 클래스를 수정할 때마다 하위 클래스를 수정해야 하는 상황이 발생한다면 그건 인터페이스를 통해 다형성을 지원하는게 더 낫다는 신호이다. 객체는 언제나 [[SOLID|SRP (Single Responsiblity Principle)]]을 지켜야 한다고 생각한다.
         Holub이 사용하는 예제를 보자. 상속을 사용해 [Stack]을 구현한다.
         자 모든 값을 clear 를 사용해 삭제했는데 topOfStack의 값은 여전히 3일 것이다. 자 상속을 통한 문제를 하나 알게 되었다. 상속을 사용하면 원치 않는 상위 클래스의 메소드까지 상속할 수 있다 는 것이다.
         상위 클래스가 가지는 메소드가 적다면 모두 [오버라이딩]하는 방법이 있지만 만약 귀찮을 정도로 많은 메소드가 있다면 오랜 시간이 걸릴 것이다. 그리고 만약 상위 클래스가 수정된다면 다시 그 여파가 하위 클래스에게 전달된다. 또 다른 방법으로 함수를 오버라이딩하여 예외를 던지도록 만들어 원치않는 호출을 막을 수 있지다. 하지만 이는 컴파일 타임 에러를 런타임 에러로 바꾸는 것이다. 그리고 LSP (Liskov Sustitution Principle : "기반 클래스는 파생클래스로 대체 가능해야 한다") 원칙을 어기게 된다. 당연히 ArrayList를 상속받은 Stack은 clear 메소드를 사용할 수 있어야 한다. 그런데 예외를 던지다니 말이 되는가?
         Stack을 구현하는 다른 방법은 상속 대신 [캡슐화]를 사용하는 것이다.
         자.. Stack과 ArrayList간의 결합도가 많이 낮아 졌다. 구현하지 않은 clear 따위 호출 되지도 않는다. 왠지 합성을 사용하는 방법이 더 나은 것 같다. 이런 말도 있다. 상속 보다는 합성을 사용하라고... 자 다시 본론으로 들어와 저 Stack을 상속하는 클래스를 만들어 보자. MonitorableStack은 Stack의 최소, 최대 크기를 기억하는 Stack이다.
         깔끔한 코드가 나왔다. 하지만 MonitorableStack은 pushMany 함수를 상속한다. MonitorableStack을 사용해 pushMany 함수를 호출하면 MonitorableStack의 입력 받은 articles의 articles.length 만큼 push가 호출된다. 하지만 지금 호출된 push 메소드는 MonitorableStack의 것이라는 점! 매번 size() 함수를 호출해 최대 크기를 갱신한다. 속도가 느려질 수도 있다. 그리고 만약 누군가 Stack의 코드를 보고 pushMany 함수의 비 효율성 때문에 Stack을 밑의 코드와 같이 수정했다면 어떻게 될 것인가???
         와!~ 예전의 Stack보다 성능은 확실히 좋아 졌을 것이다. 그런데 문제가 발생했다. 더이상 pushMany 메소드에서 push 메소드를 호출하지 않는다. 이렇게 되면 MonitorableStack은 더이상 Stack의 최대 크기를 추적하지 못하게 된다. 예기치 않은 결과이다. 상속을 사용한 구현으로 발생한 문제이다. 여기까지 글을 (책의 내용) 읽었다면, 아마 '상속을 사용하기 전에 한번 더 생각하는게 좋겠다' 라는 생각을 가슴 깊이 느꼈을 것이다. 아니면 별수 없는 일이다... :(
         자 길었던 여행의 종착점이다. 최종 코드를 보자. 위에서 말했던 상속보다는 합성을... 상속보다는 인터페이를... 이란 말을 종합 하면 ...
         완성된 코드에서는 상속으로 인한 문제들이 발생하지 않는다.
  • EffectiveC++ . . . . 17 matches
         operator new 가 하부 클래스로 상속된다면 어떻게 될까? [[BR]]
         그런데, 이 클래스를 위해 만들어진 operator new 연산자가 상속될 경우. [[BR]]
         상속받은 클래스내에 operator new연산자를 다시 재정의 해줘야 한다. [[BR]]
         이 연산자도 역시 상속될 경우 약간 골치아픈가? [[BR]]
         // base class를 상속한 클래스
         EnemyTarget의 객체를 카운트 하기 위해 정적 멤버 변수 numTargets를 두었으며 EnemyTarget을 상속한 EnemyTank에서도[[BR]]
         상속의 경우 특히나 조심해서 operator= 연산자를 만들어 줘야 한다.
         상속과 관련하여 유사한 문제가 복사 생성자에서도 생길 수 있다. 밑의 코드를 보자.
         4. 새로운 타입의 객체가 상속 그래프에 맞는가?[[BR]]
         대표적인 다중상속의 애매모호성이다.
         그리고 상속받은 클래스들에서 내용의 구현이 있다.
         만약 상속받은 클래스에서 가상함수의 구현이 되어 있지 않을 경우가 있다.
         상속이 되는 함수에 대하여 가상함수로 설정하는게 옳고 상속이 되지 않거나 상속이 되더라도 다시 구현이 되지 않다면 비가상함수로 사용되어야 한다.
         최대한 위와 같은 다이아몬드형 상속은 피하자.
         자바에서는 상속받을 클래스는 하나만 받을수 있고 인터페이스는 여러가지를 받을 수 있다.
  • JavaStudy2003/두번째과제/노수민 . . . . 12 matches
          * 상속 : 자동차 클래스에 버스 클래스, 트럭 클래스, 자가용 클래스가 속한다면,
          자동차 클래스는 상위 클래스, 버스,트럭,자가용 클래스를 하위클래스라 하며, 이들의 관계에서 "하위클래스는 상위클래스를 상속한다"고 한다.
         == 상속 ==
         === 상속, 상위클래스, 하위클래스 ===
         === 상속과 생성자 및 생성 과정 ===
         === 상속과 인스턴스 메소드의 재정의(Overriding) ===
         기본적으로 하위클래스는 상위클래스로부터 상속되는 상태와 행동들을 가진다.
         또한, 하위클래스는 자신에게 필요한 변수들과 메소드를 추가적으로 정의할 수 있습니다. 그리고, 하위클래스는 상위클래스에서 정의된 메소드와 같은 이름, 같은 인자들을 갖는 새로운 메소드를 정의하여 상위클래스에서 상속되는 메소드를 재정의할 수 잇는데,
         === 상속과 변수 및 메소드의 접근제어 ===
          * private 접근지정자로 선언된 변수는 상속할 수 없고, 메소드는 상속 및 재정의 할 수 없다.
          * public 또는 protected 접근 지정자로 선언된 변수와 메소드는 상속할 수 있고, 메소드에 대해 재정의 할 수 있다.
  • MoreEffectiveC++/Techniques1of3 . . . . 12 matches
         자, 이런걸로 한가지 재미있는 것을 만들수 있다. 만약 당신이 C++상에서 더이상 상속 되지 않는 클래스를 만들고 싶을때 어떻게 해야 할까?(주:참고로 Java나 C#의 경우 언어 설계 때부터 아예 해당 기능을 수행을 위한 키워드를 제공한다. 하지만 C++는 제공하지 않는다. 이런 방법을 설계자가 생각한건지, 차후 C++의 개발자들이 생각한건지 놀라울 뿐이다. 바로 이전에 나온 가상 복사 생성자의 아이디어와 비슷하다고 해야 할까)
         이해가 안가는 부분은 역시나 using이 쓰인 곳과 private로 상속 되었다는 점일 것이다.
         private를 먼저 설명해 한다. 결론부터 이야기하면 위험성 제거와, 크기의 최적화를 위해서 이다. 다른 이가 Counted<Printer> 포인터를 통해서 Printer객체를 제거하려는 시도를 할지도 모른다. 이를 방지하고, private상속은 Item 24에 명백히 나와 있듯이 Counted내의 가상 함수가 존재 하더라도, Printer에서 해당 가상 함수에 대한 vtbl을 생성하지 않으므로서 overhead를 줄인다.
         이는 비록 해당 객체가 private로 상속 받았지만, 유도된 객체가 생성될때 다음과 같이 초기화를 시킬수 있다. 초기화 리스트와 비슷하다고 해야 할까?
         클래스의 생성자와, 파괴자 양쪽을 사역화(private)시켜서 지역 객체(non-heap object)로 만드는걸 막는데도, 약간의 제한 사항이 발생한다. 그 제한사항이란, 상속 관계와 포함(containment:has-a)관계에서 발생한다. 다음의 예제를 보면.
         이런 문제는 해결하기 어렵지 안하. 상속 관계의 문제는 생성자는 공역(public)으로 유지하고, 파괴자만을 보호(proteced) 관계로 바꾸면 되는것이고, 포함(contain) 관계에서는 해당 포함 인자를 pointer로 바꾸고, 초기화 리스트에서 생성해 버리고, 파괴자에서 약간만 신경써주면 된다. 위의 코드의 해결책은 다음과 같다.
         실제로 세가지 생각이 이러한 디자인을 매달리지 못하게 한다. '''첫번째는''' 전역 공간에 어떤것을 정의하는 극도로 피하려는 경향이다. operator enw나 operator delete같은 미리 정의된 함수에 대하여 특별하게 고친다는 것은 더 그럴 것이다. '''둘째로''' 효율에 관한 문제이다. 모든 메모리 할당에서 overhead가 발생한다는 의미인데, 이것을 유지하겠는가? '''마지막으로''' 걱정되는 것은 평범하지만 중요한 것으로 isSafeToDelete이 모든 수행에 관하여 적용되는 적용하는 것이다. 하지만 이것이 근본적으로 불가능하다고 보이기 때문이다. 조금더 이약 해보자면, 다중 상속이나, virtual base class가 가지는 여러게의 주소들, 이 주소들 때문에 isSafeTo Delete에게 전달되는 주소에 대한 확실한 보장이 없다. 자세한 내용은 Item 24, 31일 참고하라.
         가상 클래스라고 해석 될수 있는 abstract base 는 초기화 될수가 없다. 덧붙여 말하자면, 이것은 순수 가상 함수를 최소한 하나 이상은 가지고 있어야만 한다. mixin("mix in")클래스는 잘 정의된 기능과 상속되는 어떤 클래스와도 잘 부합되도록 설계되어져 있다. 이런 클래스들은 거의 항상 abstract이다. 그래서 여기에서는 abstract mixin base class는 용도로 operator new로 객체의 할당 여부만 알수 있는 능력만을 유도된 클래스에게 제공한다.
         위에서 isSafeToDelete를 구현할때 다중 상속이나 가상 기초 함수으로 여러개의 주소를 가지고 있는 객체가 전역의 해당 함수를 복잡하게 할것이라고 언급했다. 그런 문제는 isOnHeap에서 역시 마찬가지이다. 하지만 isOnHeap는 오직 HeapTracked객체에 적용 시킨 것이기 때문에, dynamic_cast operatror를 활용으로 위의 문제를 제거한다. 간단히 포인터를 dynamic_cast 하는 것은 (혹은 const void* or volatile void* or 알맞는 것으로 맞추어서) 객체의 가장 앞쪽 포인터, 즉, 할당된 메모리의 가장 앞쪽에 주소를 가리키는 포인터를 의미한다. 그렇지만 dynamic_cast는 가상함수를 하나 이상 가지는 객체를 가리키는 포인터에 한해서만 허용 된다. isSafeToDelete함수는 모든 포인터에 관해서 가능하기 때문에 dynamic_cast가 아무런 소용이 없다. isOnHeap는 조금더 선택의 폭이 있어서 this를 const void*로 dynamic_cast하는 것은 우리에게 현재 객체의 메모리 시작점의ㅣ 포인터를 주게 된다. 그 포인터는 HeapTracked::operator new가 반드시 반환해야만 하는 것으로 HeapTrack::operator new의 처음 부분에 있다. 당신의 컴파일러가 dynamix_cast를 지원하면 이러한 기술은 이식성이 높다.
         이러한 클래스가 주어지고, BASIC 프로그래머는 이제 heap 에 할당하는 것을 추적할수 있는 능력을 클래스에게 부여 할수 있다. 추적을 원하는 클래스는 반드시 HeapTracked를 상속하도록 만든다. 예를들어서 우리가 Asset객체를 사용할때 해당 객체가 heap-base 객체인지 알고 싶다면 다음과 같이
         이 mixin 객체의 단점이라면 int나 char따위의 built-in 형에는 써먹지를 못하는 것이다. 이것들은 상속을 할수 없기 때문이다.
         흥미롭게 operator new의 사역(private)인자로의 선언은 UPNumber객체를 상속한 객체에서도 같은 능력을 발휘한다는 점이다. 다음의 예제를 보자.
  • JavaStudy2004/클래스상속 . . . . 11 matches
         === 상속 ===
          상속은 객체 지향 프로그램에서 가장 중요한 개념 중의 하나이다. 이것은 자바클래스를 직접 디자인하는 문제에 영향을 미친다.상속은 다른 클래스의 정보를 동적으로 액세스하도록 해주기 위해서 그 클래스와 다른 클래스와의 차이를 명시해주면 된다.
          각 클래스는 상위클래스(superclass)를가지며 하나 이상의 하위클래스(subclass)를 가진다.클래스들의 계층을 따라 내려가는 것을 상속된다고 한다.
          하위클래스는 상위클래스로부터 모든 메소드와 변수들을 상속받는다.상위클래스가 필요한 행위를 정의했으면 재정의하거나 다른 클래스로부터 복사할 필요도 없다. 상속받은 클래스는 자동적으로 상위클래스의 행위를 자동적으로 가지게 된다.자바 클래스 계층의 제일 위에는 Object라는 클래스가 있다. 모든 클래스는 이 클래스로부터 상속을 받는다. 각 클래스들은 특별한 목적에 맞추어 특정 정보를 추가적으로 가지게 되는 것이다.
          자바 클래스를 새로 작성할 때 대부분 다른 클래스가 가지는 정보와 몇 가지의 추가적인 정보를 가지게 할 것이다. 예를 들어 새로운 Button을 만들려고 한다면 클래스에 Button으로부터 상속받을 수 있도록 정의하기만 하면 된다. 따라서 Button과 다른 특징에 대해서만 신경 쓰면 된다.
         === 상속의 동작 ===
          * 질롯(Unit 클래스를 상속)
          * 드라군(Unit 클래스를 상속)
  • 타도코코아CppStudy/0724/선희발표_객체지향 . . . . 11 matches
          * Inheritance(상속) - 계층(hierarchy)관계에 놓여 있는 클래스들 간에 속성이나 연산 기능들을 공유한다.
          즉, 주어진 클래스에 서브클래스(subclass)가 있다면 서브클래스의 모든 객체들은 소속 클래스의 모든 속성이나 연산기능을 상속받게 된다. 따라서, 서브클래스를 정의할 때에는 수퍼클래스(super class) 로부터 상속받는 내역들을 중복하여 정의할 필요가 없게 된다.
          * sharing : 자료 구조및 행위의 공유화(sharing)는 계층 관계에 놓여 있는 클래스들 간의 상속성(inheritance)으로 가능하다.
          상속성은 설계 및 코드의 재사용(reuse)을 도와주는 중요한 개념이다.
          서브클래스가 수퍼클래스의 변수와 메소드들을 상속받을 때 필요에 따라 정의가 구체화(specification)되며, 상대적으로 상위층의 클래스 일수록 일반화(generalization) 된다고 말한다.
          * 상속성(Inheritance) : 객체를 이루는 클래스를 만들때 이전의 정의했던 클래스와 비슷하나 다른 특이한 특성을 지니는 클래스를 만드는것이다.
          또 자동차다. 가진 자동차의 엔진이 출력이 150마력이다. 여기다 똑같은 엔진을 하나더 달아 300마력이 되었다. 즉 앞의 150마력이라는 클래스에 두개로서 300마력을 만든다는 개념이 포함 즉 상속되어있는것이다. 엔진력의 향상이 손쉽게 이루어졌다. 만약 새 300마력엔진을 단 차를 산다고 하면 더 힘들것이라는것을 알것이다.
          * 다형성(Polymophism) : 상속성에서 다형의 개념이 많이 왜곡되어 보여진감이 없지않으나 다형도 객체지향에서 빼놓을수 없는 특성이다.
         설계 모형을 특정 프로그램 언어로 번역하는 작업이다. 객체, 클래스, 상속의 개념을 다 포용하는 객체지향 언어(object-oriented programming language : C++, Smalltalk 등)가 가장 좋지만 객체의 개념만 인정하고 클래스, 상속 등은 고려하지 않은 객체기반 언어(object-oriented based programming language : Ada 등)도 좋다.
  • 타도코코아CppStudy/객체지향발표 . . . . 11 matches
          * Inheritance(상속) - 계층(hierarchy)관계에 놓여 있는 클래스들 간에 속성이나 연산 기능들을 공유한다.
          즉, 주어진 클래스에 서브클래스(subclass)가 있다면 서브클래스의 모든 객체들은 소속 클래스의 모든 속성이나 연산기능을 상속받게 된다. 따라서, 서브클래스를 정의할 때에는 수퍼클래스(super class) 로부터 상속받는 내역들을 중복하여 정의할 필요가 없게 된다.
          * sharing : 자료 구조및 행위의 공유화(sharing)는 계층 관계에 놓여 있는 클래스들 간의 상속성(inheritance)으로 가능하다.
          상속성은 설계 및 코드의 재사용(reuse)을 도와주는 중요한 개념이다.
          서브클래스가 수퍼클래스의 변수와 메소드들을 상속받을 때 필요에 따라 정의가 구체화(specification)되며, 상대적으로 상위층의 클래스 일수록 일반화(generalization) 된다고 말한다.
          * 상속성(Inheritance) : 객체를 이루는 클래스를 만들때 이전의 정의했던 클래스와 비슷하나 다른 특이한 특성을 지니는 클래스를 만드는것이다.
          또 자동차다. 가진 자동차의 엔진이 출력이 150마력이다. 여기다 똑같은 엔진을 하나더 달아 300마력이 되었다. 즉 앞의 150마력이라는 클래스에 두개로서 300마력을 만든다는 개념이 포함 즉 상속되어있는것이다. 엔진력의 향상이 손쉽게 이루어졌다. 만약 새 300마력엔진을 단 차를 산다고 하면 더 힘들것이라는것을 알것이다.
          * 다형성(Polymophism) : 상속성에서 다형의 개념이 많이 왜곡되어 보여진감이 없지않으나 다형도 객체지향에서 빼놓을수 없는 특성이다.
         설계 모형을 특정 프로그램 언어로 번역하는 작업이다. 객체, 클래스, 상속의 개념을 다 포용하는 객체지향 언어(object-oriented programming language : C++, Smalltalk 등)가 가장 좋지만 객체의 개념만 인정하고 클래스, 상속 등은 고려하지 않은 객체기반 언어(object-oriented based programming language : Ada 등)도 좋다.
  • AcceleratedC++/Chapter13 . . . . 9 matches
         13장에서는 4장에서 만들었던 성적 계산 프로그램을 학부생, 대학원생에 대해서 동작하도록 기능을 확장하는 프로그램을 통해서 상속과 다형성(동적바인딩)의 개념을 배운다.
         '''상속(inheritance)'''
         class Grad:public Core { // 구현(implementation)의 일부가 아닌 인터페이스(interface)의 일부로서 상속받는다는 것을 나타냄.
         Grad 클래스는 Core로 부터 파생되었다(Derived from), 상속받았다(inherits from), 혹은 Core는 Grad의 base class 이다 라는 표현을 사용한다.
         상속받은 클래스는 그 부모클래스의 생성자, 소멸자, 대입연산자를 제외한 그외의 모든 클래스의 요소를 물려받는다.
          private 보호 레이블로 지정된 멤버는 그 클래스 자체, friend 함수를 통해서만 직접적으로 접근이 가능하다. 이 경우 상속된 클래스에서는 부모 클래스의 private 멤버로의 접근이 필요한데 이럴때 '''protected'''라는 키워드를 사용하면 좋다.
          상기의 클래스는 Grad의 멤버 함수로 부모 클래스의 read_common, read_hw의 함수를 그대로 상속받았다는 것을 가정한다.
          === 13.1.2 상속 및 생성자 ===
          === 13.6.1 상속 및 컨테이너 ===
  • ProjectAR/Design . . . . 9 matches
          * '''CArObject''' 에서 상속받은 '''CARHero'''와 '''CARMonster'''가 있다.
          * '''CArHero에서''' 상속받은 검사, 창사 이런게 있을테다.
          * '''CARMonster'''를 상속받는 '''CARColdMon''', '''CARFireMon'''등등이 있다.
          * 보스는 각각의 '''CAR~~~Monr'''를 상속받으면 될거같다.
          * 정령을 상속받는 어쩌구 저쩌구 정령
          * 아이템을 상속받는 착용가능한 아이템, 소모성 아이템 등등
          그런데 왜 저렇게 복잡하게 상속을 받아야 하는걸까, CARMonster클래스가 모든걸 갖고 있어도 충분히 처리가 가능할 것같은데 --[선호]
          * CARHero는 CARObject를 상속받는다.
          * CARItem을 상속은 받지만 장착은 불가능한 아이템이다.
  • Gof/FactoryMethod . . . . 8 matches
          1. ''서브 클래스와 소통 통로 제공''(''Provides hooks for subclasses.'') Factory Method를 적용한 클래스에서 객체의 생성은 항상 직접 만들어지는 객체에 비하여 유연하다. Factory Method는 객체의 상속된 버전의 제공을 위하여, sub클래스와 연결될수 있다.(hook의 의미인데, 연결로 해석했고, 그림을 보고 이해해야 한다.)
          2. ''클래스 상속 관게에 수평적인(병렬적인) 연결 제공''(''Connects parallel class hierarchies.'') 여태까지 factory method는 오직 Creator에서만 불리는걸 생각해 왔다. 그렇지만 이번에는 그러한 경우를 따지는 것이 아니다.; 클라이언트는 수평적(병렬적)인 클래스간 상속 관계에서 factory method의 유용함을 찾을수 있다.
          병렬 클래스 상속은 클래스가 어떠한 문제의 책임에 관해서 다른 클래스로 분리하고, 책임을 위임하는 결과를 초례한다. 조정할수 있는 그림 도형(graphical figures)들에 관해서 생각해 보자.;그것은 마우스에 의하여 뻗을수 있고, 옮겨지고, 회정도 한다. 그러한 상호작용에 대한 구현은 언제나 쉬운것만은 아니다. 그것은 자주 늘어나는 해당 도형의 상태 정보의 보관과 업데이트를 요구한다. 그래서 이런 정보는 상호 작용하는, 객체에다가 보관 할수만은 없다. 게다가 서로다른 객체의 경우 서로다른 상태의 정보를 보관해야 할텐데 말이다. 예를들자면, text 모양이 바뀌면 그것의 공백을 변화시키지만, Line 모양을 늘릴때는 끝점의 이동으로 모양을 바꿀수 있다.
          이러한 제한에서는 모양에따라, 각 상테에 따라 객체를 분리하는 것이 더 좋을 것이고, 각자 필요로하는 상태를 유지 해야한다. 서로 다른 모양은 서로다른 Manipulator의 sub클래스를 사용해서 움직여야 한다.이러한 Manipulator클래스와 상속은 병렬적으로 이루어 진다. 다음과 같은 모양 같이 말이다.
         Figure클래스는 CreateManipulator라는, 서로 작용하는 객체를 생성해 주는 factory method이다. Figure의 sub클래스는 이 메소드를 오버라이드(override)해서 그들에게 알맞는 Manipulator sub클래스의 인스턴스를 (만들어, )반환한다. Figure 클래스는 아마도 기본 Manipulator인스턴스를 (만들어,) 반한하기 위한 기본 CreateManipulator를 구현했을 것이다. 그리고 Figure의 sub클래스는 간단히 이러한 기본값들을 상속하였다. Figure클래스 들은 자신과 관계없는 Manipulator들에 대하여 신경 쓸필요가 없다. 그러므로 이들의 관계는 병렬적이 된다.
         Factory Method가 두게의 클래스의 상속 관계에서 어떻게 이러한 연결과정을 정의하는지 주목하라. 그것은 서로 고유의 기능을 부여시키는 작업을 한다.
          Parameterized factory method는 Product를 상속받은 MyProduct와 YourProduct상에서일반적으로 다음과 같은 형태를 가진다.
  • JavaStudy2003/두번째과제/곽세환 . . . . 8 matches
          상속(Inheritance)
         == 3.상속 ==
         캡슐화, 메시지, 클래스, 인스턴스, 객체, 상속, 다형성
          아직 상속을 읽고 있는 중이기 때문에 모르는 것이지요^^. private 과 protected 는 상속이 이루어지지 않으면 똑같이 사용이 됩니다. 하지만 상속이 이루어진다면 의미는 틀려지죠. 만약 '''자동차''' 라는 객체가 있다고 봅시다. 그런데 이것은 굉장히 추상적인 개념이지요. 이 '''자동차''' 의 하위 개념인 '''트럭''' 과 '''버스''' 와 '''승용차''' 를 '''자동차'''에서 상속받아 만들었다고 합시다. 그랬을 때 '''자동차''' 가 가지는 어떠한 상태는 '''트럭''' 과 '''버스''' 와 '''승용차'''도 역시 가지고 있을 수도 있습니다. 이런 경우 protected 로 선언해 주면 그 상태를 상속받을 수 있다는 것이지요. 하지만 외부에서 접근은 불가능하다는 사실은 변함이 없습니다. 하지만 public 은 외부에서 접근이 가능하게 되는 것이지요. 한번 직접 코드로 만들어보세요. 어떻게 다른지 채험하는게 가장 이해가 쉬울겁니다.
  • DesignPatterns/2011년스터디/1학기 . . . . 7 matches
          1. 상속구현이 나쁘다고 말한다. 그래서 그런지 나뻐보인다. 코드가 꼬이니까.
          1. 상속구현이 왜 나쁜가에 대해 배웠다.
          1. 상속구현은 커플링을 늘리는 것 + 찾기 힘든 버그를 발생시키는 원인 이라 매우 슬픈거 같다.
          1. 쩌는 형님들은 잘 쓰시겠지만 코드가 꼬이는 모습을 보니 내가 하는 상속구현은 일단 슬퍼질 가능성이 매우 높으므로 생각에 생각을 해서 쓰던가 아니면 닥치고 인터페이스 구현을 해야겠다.
          1. 자바 스윙의 코드 일부를 보니 알거같기도.. 코드에서 기반클래스를 확장하는 파생 클래스가 아니라 속성이나 기능만 변경된 클래스를 구현 상속해 생성하고 있다.
          1. Factory Method, Abstract Factory Method, Template Method, Command, Strategy의 비교를 통해 상속구현의 비효율성에 대해 느꼇다.
          1. Factory Method 패턴은 상속을 통해 바뀌는 부분을 오버라이딩하여 구현
  • HardcoreCppStudy/두번째숙제/CharacteristicOfOOP/김아영 . . . . 7 matches
         '''* 상속성(Inheritance) '''
         상속이란, 기존에 만들어 놓은 객체들로 부터 모든 변수와 메소드를 물려 받아 새로운 객체를 만들 수 있다는 것을 뜻한다. 즉, 새프로그램을 만들 때 기존의 자료를 이용해(상속받아) 새롭게 정의하여 사용한면 된다는 것이다. 이로인해 부수적으로 프로그래밍의 노력이 줄고 시간 단축되며 그리고 OOP의 가장 중요한 재사용성(Reusability) 얻을 수 있다. 델파이는 TObject라는 최상위 객체로부터 상속시켜 단계적으로 하위 객체들을 생성해 만들어진 구조를 지니고 있다.
         객체지향 프로그래밍에서 다형성이란 근본적으로 상속에 뿌리를 두고 있다. 조상 클래스로부터 상속을 받아 새로운 객체들이 파생되어 생성된다. 이때 만약 새객체들이 모두 조상 클래스와 모두 동일한 값만 가지고 있다면 새로운 객체로서 의미가 없다. 왜냐면 그것을 만드는 이유는 무언가 다른 역할을 하기 위해 생성하는 것이기 때문이다. 그래서 다형성이란 조상이되는 객체로부터 상속을 받아 다른 결과물을 산출해 낼때 다형성이라는 의미를 부여할 수 있게 된다.
  • 5인용C++스터디/클래스상속 . . . . 6 matches
         == 클래스 상속 ==
         상속이란?
         == 예2)상속할 기본클래스 구축하기 ==
         하지만 상속하려면 private값을 이 기본 클래스에서 상속한 클래스에서 직접 엑세스 한는 것을 혀용하고 싶을 것이다.
         이에 protected키워들를 사용해서 현재클래스와 상속하는 클래스에게만 엑세스를 허용한다.
  • BigBang . . . . 5 matches
          * private의 상속
          * private 상속을 받게 되면, 클래스 내에서만 사용할 수 있고, 외부에서는 접근을 할 수 없다. 부모 클래스가 가상함수를 가지고 있고, 이것을 재정의 해서 사용할 수 있다.
          * 어떤 클래스를 쓰되, 외부에 공개하지 않고, 가상함수를 상속받아야 할 때 사용할 수 있다.
          * (사실 people 클래스 안에 DataInfo를 멤버 변수로 선언해서 사용해도 되긴 하다. 하지만 private 상속을 받을 때 보다 메모리를 더 많이 사용하게 되기 때문에, private 상속을 쓰는 게 좋다.)
  • HardcoreCppStudy/두번째숙제/CharacteristicOfOOP/변준원 . . . . 5 matches
         속성 상속(inheritance)
         속성 상속이라는 개념 역시 우리의 일상 생활에서 흔히 사용하는 개념을 프로그램으로 표현하기 위한 편리한 수단이다. 어떤 객체의 종류, 즉 클래스는 좀 더 세분화하여 분류할 수가 있는데 이렇게 세분화된 종류나 유형을 subtype 혹은 subclass라고 한다.
         객체지향 프로그래밍에서 "속성 상속"은 새로운 클래스를 정의할 때 모든 것은 처음부터 다 정의하는 것이 아니라 이미 존재하는 유사한 클래스를 바탕으로 하여 필요한 속성만 추가하여 정의하는 경제적인 방법을 의미한다. 이 때 새로이 생기는 클래스를 subclass라 하고 그 바탕이 되는 클래스를 superclass라 한다. 이렇게 하면 클래스들 사이에서 공통으로 가지는 특성, 즉 데이타 구조나 함수들은 중복하여 정의하는 일을 줄일 수 있을 뿐 아니라, 특성을 수정하거나 추가시에 superclass의 정의만 고치면 그 subclass들도 변경된 속성을 자동적으로 상속받게 되므로 매우 편리하다.
         클래스 중에는 인스턴스(instance)를 만들어 낼 목적이 아니라 subclass들의 공통된 특성을 추출하여 묘사하기 위한 클래스가 있는데, 이를 추상 클래스(Abstract class, Virtual class)라 한다. 변수들을 정의하고 함수중 일부는 완전히 구현하지 않고, Signature만을 정의한 것들이 있다. 이들을 추상 함수(Abstract function)라 부르며, 이들은 후에 subclass를 정의할 때에 그 클래스의 목적에 맞게 완전히 구현된다. 이 때 추상 클래스의 한 subclass가 상속받은 모든 추상 함수들을 완전히 구현했을 때, 이를 완전 클래스(Concrete class)라고 부른다. 이 완전 클래스는 인스턴스를 만들어 낼 수 있다.
  • MoreEffectiveC++/Exception . . . . 5 matches
         그럼 예외의 변환에는 크게 두가지의 생각할 점이 있는데. '''첫번째가 상속 관계(예외 상의)''' 이다. 예외에서는 한 예외 객체에서 파생된 다른 예외객체들을 잡는것이 가능한데 예를들어서 표준 C++ 라이브러리에서의 예외 상속도는 이렇게 구성되었다. (모든 예외가 나왔는지는 모르겠다.)
          * 둘째로 던저지는 객체는 함수로 전달될때 비하여 형에 대한 변환이 형에 영향 받기 쉽다. [[BR]] 예외 객체는 상속에 규칙을 따른다. (설명을 보시길)
         Catch-by-value는 표준 예외 객체들 상에에서 예외 객체의 삭제 문제에 관해서 고민할 필요가 없다. 하지만 예외가 전달될때 '''두번의''' 복사가 이루어 진다는게 문제다. (Item 12참고) 게다가 값으로의 전달은 ''slicing problem''이라는 문제를 발생시킨다. 이게 뭐냐 하면, 만약 표준 예외 객체에서 유도(상속)해서 만들어진 예외 객체들이 해당 객체의 부모로 던저 진다면, 부모 파트 부분만 값으로 두번째 복사시에 복사되어서 전달되어 버린다는 문제다. 즉 잘라버리는 문제 "slice off" 라는 표현이 들어 갈만 하겠지. 그들의 data member는 아마 부족함이 생겨 버릴 것이고 해당 객체상에서 가상 함수를 부를때 역시 문제가 발생해 버릴 것이다. 아마 무조건 부모 객체의 가상 함수를 부르게 될 것이다.(이 같은 문제는 함수에 객체를 값으로 넘길때도 똑같이 제기 된다.) 예를 들어서 다음을 생각해 보자
          class Validation_error : public runtime_error{ // 자 해당 객체는 runtime_error를 상속해서 만들었고
  • MoreEffectiveC++/Techniques2of3 . . . . 5 matches
         제일 처음에 해야 할일은 참조세기가 적용된 객체를 위한 (reference-counded object) RCObject같은 기초 클래스를 만드는 것이다. 어떠한 클라스라도 이 클래스를 상속받으면 자동적으로 참조세기의 기능이 구현되는 형식을 바라는 것이다. 그러기 위해서는 RCObject가 가지고 있어야 하는 능력은 카운터에 대한 증감에 대한 능력일 것이다. 게다가 더 이상, 사용이 필요 없는 시점에서는 파괴되어야 한것이다. 다시말해, 파괴되는 시점은 카운터의 인자가 0이 될때이다. 그리고 공유 허용 플래그에 대한(shareable flag) 관한 것은, 현재가 공유 가능한 상태인지 검증하는 메소드와, 공유를 묶어 버리는 메소드, 이렇게만 있으면 될것이다. 공유를 푼다는 것은 지금까지의 생각으로는 불가능한 것이기 때문이다.
         // 여기에서 T는 RCObject나, 이것을 상속 받는 클래스이다.
         이러한 deep-copy 복사 생성자의 존재는 RCPtr<T>가 가리키는 T에 국한 되는 것이 아니라, RCObject를 상속하는 클래스에도 지원되어야 한다. 사실 RCPtr 객체 관점에서 볼때는 오직 참조 세기를 하는 객체를 가리키기만 하는 관점에서 이것은 납득할수 없는 사실일지 모른다. 그렇지만 이러한 사실이 꼭 문서화 되어 클라이언트에게 알려져야 한다.
         class RCPtr { // 여기에서 T는 RCObject를 상속해야 한다.
         휴, 우리는 지금까지 흥미로운 클래스에 관해서 논의 했는데, 이번에는 Widget같은 이미 정의되어 있는 클래스를 전혀 건드리지 않고, 참조 세기를 적용 시킬수는 없을까? 그러니까. 라이브러리를 고치지 않고 말이다. Widget에 참조 세기를 적용 시켜야 하는데, 앞의 방법 처럼 RCObject를 Widget이 상속 시킬 방법은 전혀 없다. 그래서 RCPtr도 적용할수 없다. 방법이 없는 걸까?
  • RubyLanguage/Class . . . . 5 matches
          * 제한된 다중상속
          * Ruby는 단일상속만을 지원한다.
          * 따라서 클래스는 하나만 상속할 수 있다.
          * 그러나 모듈은 여러개를 상속받을 수 있다.
          * '''Include''' : 클래스가 모듈을 상속받는 것.
  • 삼총사CppStudy/Inheritance . . . . 5 matches
          상속에 대해서 설명해 보고자 합니다. 길더라도 끝까지 읽어봐주세요
          아.. 이 문제를 어떻게 하면 좋을까~? 이럴때 사용할 수 있는 스킬이 바로 '''상속(Inheritance)'''이다.
         protected: // protected를 사용한 이유는 상속받은 클래스에서도 이 멤버들을 사용할 수 있게 하기 위함이다.
          마린과 파이어뱃은 이 유니트라는 클래스를 상속 받으면 된다.
         class CMarine : public CUnit // 이렇게 상속받는다.
  • Delegation . . . . 4 matches
         객체가 상속없이 어떻게 구현을 공유할 수 있을까?
         스몰토크는 다중상속을 지원하지 않는다. A와 B의 속성을 모두 가지고 있는 객체를 표현하려면 어떻해야할까? 상속은 잠재적으로 오버헤드가 있다. 또한 복잡한 상속관계에서는 서브클래스의 단 하나의 메소드를 공부함에도 위에서 알아야 할게 너무 많다. 답은 '위임'이다. 일의 일부를 다른 객체에게로 위임하자.
  • JavaScript/2011년스터디/서지혜 . . . . 4 matches
          * 상속
          * 자바스크립트의 상속은 객체지향언어의 상속과 다르다.
         document.write(class_test.name1); // 여기서 상속이 일어나야함....
  • OOD세미나 . . . . 4 matches
          오늘 했던 내용 중 정말 특히 기억에 남는건 '''"상속을 하기 위한 프로그래밍을 하지 말아라" & "패턴을 적용시키기 위한 프로그래밍을 하지 마라"''' 였습니다.
          확실히 제 경험에 비추어보면 학부과정에서 OOP에 대한 개념을 배울때는 상속, 다형성 등을 배울때 과제는 상속을 이용한 무언가, 오버라이딩, 오버로딩을 하도록 요구했습니다. 심지어 의미없는 프렌드도 쓰도록했었죠ㅎ 물론 가르치는 교수님의 입장에선 직접 써보게하려면 그 방법이 가장 확실합니다. 그렇지만 그렇게 배우고나면 왠지 설계에 대한 별 생각없이 그렇게 하게되더군요. 저또한 미숙하지만 후배들에게 OOP를 왜 쓰고, 어떤 점이 좋은가를 알려주다보니 다시 한번 기본개념에 대해 생각하게되고 그러면서 제대로된 OOP는 뭔가 싶었습니다. (적어도 제 생각엔)'''단지 class쓰고 상속한다고 OOP가 아닙니다'''. OOP의 장점을 이용해야 진정한 OOP입니다.
  • 이영호/개인공부일기장 . . . . 4 matches
         26 (화) - Compilers, C++(다양한 Virtual 상속, Class의 메모리 구조-C의 구조체와 대비하여/Class는 구조체로 포인터함수를 사용해 구현한 메모리 구조와 비슷하다.)
         25 (월) - Compilers(한달에 1단원씩 떼기로 결정. 읽은곳 계속 읽어야 이해가 가능함. 오래전에 쓰여져서 상황도 과거로 이해해야함.), C++ Class 상속의 이해, 상속과 다형성
         22 (금) - Compilers, C++(은닉성, 추상성, 상속성, 생성자, 파괴자 등등등등등) -> 다음주 금요일까지 복습까지 완료하자.
  • 한자공/시즌1 . . . . 4 matches
          * 상속과 오버라이딩에 대해서 할 예정입니다.
          * 상속과 오버라이딩에 대해 자신이 배운 내용을 나누었습니다.
          * 상속을 주된 내용으로 실습을 하였습니다.
          * 상속
  • Adapter . . . . 3 matches
         Smalltalk에서 ''Design Patterns''의 Adapter 패턴 class버전을 적용 시키지 못한다. class 버전은 다중 상속으로 그 기능을 구현하기 때문이다. [[BR]]
         DP의 p147을 보면 '''Adapter'''클래스는 반드시 그것의 '''Adaptee'''를 타입으로 선언해서 가지고 있어야만 한다.이런 경우에는 해당 클래스와 그것에서 상속되는 클래스들만이 기능을 사용(adapt)할수 있다. Smalltalk에서 엄격한 형검사(Strong Typeing) 존재 않으면, class 가 '''Adapter'''에서 '''Adaptee'''로 보내어지는 메세지를 보낼수 있는 이상 '''Adaptee'''가 어떠한 클래스라도 상관없을 것이다. [[BR]]
         자 그럼 Adapter를 적용시키는 시나리오를 시작해 본다. ''Design Patterns''(DP139)에서 DrawingEditor는 그래픽 객체들과 Shape의 상속도상의 클래스 인스턴스들을 모아 관리하였다. DrawingEditor는 이런 그래픽 객체들과의 소통을 위하여 Shape 프로토콜을 만들어 이 규칙에 맞는 메세지를 이용한다. 하지만 text인자의 경우 우리는 이미 존재하고 있는 TextView상에서 이미 구현된 기능을 사용한다. 우리는 DrawEditior가 TextView와 일반적으로 쓰이는 Shape와 같이 상호작용 하기를 원한다. 그렇지만 TextView는 Shape의 프로토콜을 따르지 않는 다는 점이 문제이다. 그래서 우리는 TextShap의 Adapter class를 Shape의 자식(subclass)로 정의 한다. TextShape는 인스턴스로 TextView의 참조(reference)를 가지고 있으며, Shape프로토콜상에서의 메세지를 사용한다.; 이들 각각의 메세지는 간단히 다른 메세지로 캡슐화된 TextView에게 전달되어 질수 있다. 우리는 그때 TextShape를 DrawingEditor와 TextView사이에 붙인다.
  • ComponentObjectModel . . . . 3 matches
         COM 을 처음 공부하고 직접 구현할때에는 모든 것들이 신기해보인다. 팩토리네 스마트 포인터네 스텁-스켈레톤이네 인터페이스네 구현상속과 인터페이스상속은 다르네 등등. 하지만, 동급에 해당되어보이는 Java 플랫폼 내에서의 솔루션들을 보면 너무나 당연한건데 대단하게 표현되어있다거나 (예를 들면 '인터페이스 상속'. COM 책에서는 이걸 왜 무언가 새로운 대단한 기술인 양 서술했을까?) 아에 필요가 없는 기술일 수도 있다. (스마트 포인터 : VM 지원을 받는 플랫폼에선 전혀 필요가 없다.) (물론, 이건 COM 을 설명하던 책들중에 C++ 로 COM 을 구현을 설명하는 책들에 한함)
  • DPSCChapter3 . . . . 3 matches
          (결국, 각각이 CarEngine을 Base Class로 해서 상속을 통해 Ford Engine,Toyota Engine등등으로 확장될 수 있다는 말이다.)
          (정리 : Abstract Factory Pattern은 Factory Pattern을 추상화시킨 것이다.Factory Pattern의 목적이 Base Class로부터 상속
          함수를 재 정의한다. 그래서 우리는 Object를 상속한 새로운 하위 구조를 추가한다.
  • DelegationPattern . . . . 3 matches
         클래스에 대해 기능을 확장하는 두가지 방법중 하나이다. 하나는 상속이고 하나는 위임(Delegation) 이다. 상속을 하지 않아도 해당 클래스의 기능을 확장시킬 수 있는 방법이 된다.
         전에 SE 수업중에 컴포넌트모델의 필요성을 이야기하던중 '상속으로의 재사용이 어렵기 때문에' 이야기를 하셨는데, 왜 대안 중 하나로서의 [Delegation] 에 대한 언급이 전혀 없으셨는지 모르겠다. Delegation 만 잘 이해해도 준 컴포넌트 스타일의 모듈화 프로그래밍을 잘 진행할 수 있고, 사람들 간의 작업분담도 잘 이끌어 낼 수 있을건데.. --[1002]
  • Gof/AbstractFactory . . . . 3 matches
         이 문제는 기본적인 Widget의 인터페이스를 정의한 abstract WidgetFactory 클래스를 정의함으로써 해결할 수 있다. 또한 모든 종류의 Widget에는 추상클래스가 존재한다, 그리고 구체적인 서브 클래스는 Widget을 상속해서 룩앤필 기본을 정의한다. WidgetFactory의 인터페이스는 각각의 추상 Widget 클래스의 새로운 객체를 반환하는 기능을 가지고 있다. 클라이언트는 이런 기능을 수행해서 Widget 인스턴스를 만든다. 그러나 클라이언트는 사용하는 클래스의 구체적인 내용에 대해서는 신경쓰지 않는다. 이처럼 클라이언트는 일반적인(?) 룩앤필의 독립성에 의존한다.
          이 concrete factory는 특정 상속에 의한 객체(ProductObject)를 만들어낸다. 서로 다른 객체(ProductObject)를 만들어 내기 위해서는
          factory가 객체를 만들어 내는데 대한 수행과 책임을 캡슐화 하기 때문에 상속한 클래스로부터 클라이언트가 독립적일 수 있다.
  • Java Study2003/첫번째과제/장창재 . . . . 3 matches
         자바의 주된 특징은 기존의 C/C++ 언어의 문법을 기본적으로 따르고, C/C++ 언어가 갖는 전처리기, 포인터, 포인터 연산, 다중 상속, 연산자 중첩(overloading) 등 복잡하고 이해하기 난해한 특성들을 제거함으로써 기존의 프로그램 개발자들이 쉽고 간단하게 프로그램을 개발할 수 있도록 합니다.
         자바는 C++와는 달리 처음부터 객체지향 개념을 기반으로 하여 설계되었고, 객체지향 언어가 제공해 주어야 하는 추상화(Abstraction), 상속(Inheritance), 그리고 다형성(Polymorphism) 등과 같은 특성들을 모두 완벽하게 제공해 주고 있습니다. 또한, 자바의 이러한 객체지향적 특성은 분산 환경, 클라이언트/서버 기반 시스템이 갖는 요구사항도 만족시켜 줄 수 있습니다.
         이러한 문제는 자바가 스레드 스케줄링 정책 구현에 의존하고, synchronized 명령어가 모니터 기반의 동기화 기법만 제공하고 큐 대기 시간을 예측할 수 없으며, notify() 메소드가 스레드를 깨우는 순서가 불명확하고, 우선순위 역전(priority inversion_의 가능성이 있습니다. 이러한 문제는 API 수준에서 해결되어야 하고, 실시간 타스크 처리를 위한 우선순위 레벨을 확장하고, 우선순위 상속(priority inheritance) 또는 우선순위 최고 한도 제한(priority ceiling) 등과 같은 우선순위 역전 방지 (priority inversion avoidance) 프로토콜을 사용하고, MuteX, 이진 세마포어(Binary Semaphore), 계수 세마포어(Counting Semaphore) 등을 사용할 수 있습니다.
  • MockObjects . . . . 3 matches
         실제의 객체역할을 흉내내는 일을 하는 객체이다. 보통 MockObject라는 클래스를 상속받아서 (구현은 각 언어별로 '알아서'이다. ^^; 처음 Mock 의 개념이 나온 컬럼은 Java 소스였다.) 만들어준다. 테스트를 위해서는 처음에 해당 객체에 초기설정을 해 둔다. 그리고 Test를 돌리게 된다.
         그리고 위와 같은 경우 UnitTest 코드의 중복을 가져올 수도 있다. 이는 상속과 오버라이딩을 이용, 해결한다.
         || MockObject || Mock Object들의 상위클래스. Mock Object들은 MockObject 들을 상속받아서 구현한다. ||
  • MoreEffectiveC++/Basic . . . . 3 matches
         위의 두번째 호출의 클래스 상속의 다형적 성질을 이용한 함수 이용 즉
         로 사용한다. 느낌이 오겠지! 당연히 상속시 child는 parent보다 큰 경우가 다반사이고 배열의 위치 추적이 엉망 진창이 되어 버린다.
         생각해 보라 Virtual base class가 왜 기본 생성자를 필요로 하는가. 생성자를 만들어 놓으면 상속하는 이후 모든 클래스들에게 로드가 걸리는 셈이 된다. 근원이 흔들려 모두가 영향을 받는 사태이다. 만약? 수만개의 객체 생성이라면 이건 굉장한 문제가 될수 있다.
  • NUnit . . . . 3 matches
          * 어떠한 클래스라도 즉시 Test를 붙일수 있다. (반면 JUnit 은 TestCase 를 상속받아야 하기 때문에, 기존 product소스가 이미 상속 상태라면 Test Fixture가 될수 없다. )
          * Attribute이 익숙하지 않은 상태라 Test 를 상속받은 후 SetUp과 TearDown 의 실행점이 명쾌하지 못했다. 즉, 학습 비용이 필요하다.
  • STL/vector/CookBook . . . . 3 matches
          * 구조체에서 함수역시 가능하고, constructor, destructor역시 가능합니다. 다만 class와 차이점은 상속이 안되고, 내부 필드들이 public으로 되어 있습니다. 상속이 안되서 파생하는 분제들에 관해서는 학교 C++교제 상속 부분과 virtual 함수 관련 부분의 동적 바인딩 부분을 참고 하시기 바람니다.--["상민"]
  • StaticInitializer . . . . 3 matches
         문제는 StaticInitializer 부분에 대해서 상속 클래스에서 치환을 시킬 수 없다는 점이다. 이는 꽤 심각한 문제를 발생하는데, 특히 Test 를 작성하는중 MockObject 등의 방법을 사용할 때 StaticInitializer 로 된 코드를 치환시킬 수 없기 때문이다. 저 안에 의존성을 가지는 다른 객체를 생성한다고 한다면 그 객체를 Mock 으로 치환하는 등의 일을 하곤 하는데 StaticInitialzer 는 아에 해당 클래스가 인스턴스화 될때 바로 실행이 되어버리기 때문에 치환할 수 없다.
         StaticInitialzer 에서 값만 치환하는 것으로 (상속클래스에서 해당 Class Variable 의 값을 바꿔주는식으로) 해결되는 문제라면 크게 어렵진 않다. 하지만, 만일 저 부분에 DB 나 File 등(또는 File 을 사용하는 Logger 등) 외부 자원을 이용하는 클래스를 초기화하게 된다면 사태는 더욱더 심각해진다. 처음부터 해당 Class 가 DB, File 등 큰 자원에 대해 의존성을 가지게 되는 것이다. 게다가 이는 상속을 하여 해당 부분을 Mock 으로 치환하려고 해도 StaticInitializer 가 먼저 실행되어버리므로 '치환'이 불가능해져버린다.
  • 새싹교실/2012/AClass . . . . 3 matches
          * 오버라이딩, static, 상속, protected, return형태와 오버로딩의 관련
          * [황혜림] - 상속배웠습니다. protected가 무엇인지 배웠고 오버로딩, 오버라이딩이 무엇인지도 배웠습니다. static과 const도 배웠습니다.
          * [도상희] - 상속, 디폴트 생성자, 오버로딩과 오버라이딩의 차이점, static를 배웠다
  • 토비의스프링3/오브젝트와의존관계 . . . . 3 matches
          * 추상클래스를 만들어놓고 상속을 통해 변화를 구현하는 방법 -> 불편하다
          * 상속보다 유연한 관계 설정 가능
          * 1. private 생성자를 가지고 있기 때문에 상속할 수 없다.
  • 1002/Journal . . . . 2 matches
         이걸 상속받아서 getLibrary를 override하고 MockObject로 연결해라.
          * ["StatePattern"] - Tool 선택에서 이용. 현재 Tool을 추가하려면 1. Tool 상속. 2. interface 구현. 이다. 실질적인 기능을 하려면 현재 코드에선 CommandPattern 과 붙어야 할듯.
  • 5인용C++스터디 . . . . 2 matches
          * [5인용C++스터디/클래스상속보충]
          * [5인용C++스터디/클래스상속] - 조재화
  • AdvancedJS . . . . 2 matches
          * 개인적으로 자바스크립트에 관심도 있고 해서 세미나를 들으러 왔다. 근데 가끔 웹페이지에서 자바스크립트 소스를 보면 C++이랑 비슷하게 쓰길래 그냥 비슷한 언어인가 싶었는데, 이번에 들어보면서 오히려 다른 점이 크게 부각된 느낌이다. C++이랑 비교해서 상속 방식도 다르고(프로토타입 상속) this의 개념도 좀 다르고 함수가 객체로 취급되고 등등. 물론 나중에 따로 책을 보면서 공부를 하긴 하겠지만 아마 이번에 배운 내용은 책에서 쉽게 찾아볼 수 없지 않을까 싶다. - [서민관]
  • AppletVSApplication/상욱 . . . . 2 matches
          자바 애플릿은 기본적으로 java.applet.Applet 클래스를 상속하는 하위클래스를 생성함으로써 작성가능한데, java.applet.Applet 클래스는
         java.awt.Panel 클래스를 상속하는 하위클래스입니다.
  • C++ . . . . 2 matches
         벨 연구소의 [http://www.research.att.com/~bs/homepage.html Bjarne Stroustrup]은 1980년대에 당시의 [C]를 개선해 C++을 개발하였다. (본디 C with Classes라고 명명했다고 한다.) 개선된 부분은 클래스의 지원으로 시작된다. (수많은 특징들 중에서 [가상함수], [:연산자오버로딩 연산자 오버로딩], [:다중상속 다중 상속], [템플릿], [예외처리]의 개념을 지원하는) C++ 표준은 1998년에 ISO/IEC 14882:1998로 재정되었다. 그 표준안의 최신판은 현재 ISO/IEC 14882:2003로서 2003년도 버전이다. 새 버전의 표준안(비공식 명칭 [C++0x])이 현재 개발중이다. [C]와 C++에서 ++이라는 표현은 특정 변수에 1의 값을 증가시키는 것이다. (incrementing이라 함). C++이라는 명칭을 이와 동일한 의미를 갖는데, [C]라는 언어에 증가적인 발전이 있음을 암시하는 것이다.
  • DPSCChapter4 . . . . 2 matches
         '''Facade(179)'''는 확장된 시스템에서(하위, 상속받은) interface들의 조합에 대한 일관적인 접근(interface)을 제공한다. Facade는 확장 시스템(하위, 상속받은)을 좀더 사용하게 쉽도록 높은 단계의 interface를 정의한다.
  • DefaultValueMethod . . . . 2 matches
         의사소통을 더 쉽게 해주고, 상속될때에 오버라이딩 할 수 있는 여지를 남겨준다.(상속관계마다 상수가 다른 경우를 말하는 것 같다.)
  • Eclipse . . . . 2 matches
         ||F4 || Open Type Hierarchy , 해당 인자의 상속 관계를 표로 보여준다.||
         ||Ctrl + T || 상속 관계를 소스의 팝업창으로 보인다. ||
  • Gof/Composite . . . . 2 matches
          * 기본 객체들과 복합 객체들로 구성된 클래스 계층 구조를 정의한다. (상속관계가 아님. 여기서는 일종의 data-structure의 관점) 기본 객체들은 더 복잡한 객체들을 구성할 수 있고, 계속적이고 재귀적으로 조합될 수 있다. 클라이언트 코드가 기본 객체를 원할때 어디서든지 복합 객체를 취할 수 있다.
         자, 우리는 컴퓨터 섀시를 Chassis 라 불리는 CompositeEquipment의 서브클래스로서 표현할 수 있다. Chassis는 CompositeEquipment로부터 자식-관련 명령어들을 상속받는다.
  • Java Study2003/첫번째과제/곽세환 . . . . 2 matches
         자바의 주된 특징은 기존의 C/C++ 언어의 문법을 기본적으로 따르고, C/C++ 언어가 갖는 전처리기, 포인터, 포인터 연산, 다중 상속, 연산자 중첩(overloading) 등 복잡하고 이해하기 난해한 특성들을 제거함으로써 기존의 프로그램 개발자들이 쉽고 간단하게 프로그램을 개발할 수 있도록 합니다.
         자바는 C++와는 달리 처음부터 객체지향 개념을 기반으로 하여 설계되었고, 객체지향 언어가 제공해 주어야 하는 추상화(Abstraction), 상속(Inheritance), 그리고 다형성(Polymorphism) 등과 같은 특성들을 모두 완벽하게 제공해 주고 있습니다. 또한, 자바의 이러한 객체지향적 특성은 분산 환경, 클라이언트/서버 기반 시스템이 갖는 요구사항도 만족시켜 줄 수 있습니다.
  • Java Study2003/첫번째과제/노수민 . . . . 2 matches
         자바의 주된 특징은 기존의 C/C++ 언어의 문법을 기본적으로 따르고, C/C++ 언어가 갖는 전처리기, 포인터, 포인터 연산, 다중 상속, 연산자 중첩(overloading) 등 복잡하고 이해하기 난해한 특성들을 제거함으로써 기존의 프로그램 개발자들이 쉽고 간단하게 프로그램을 개발할 수 있도록 합니다.
         자바는 C++와는 달리 처음부터 객체지향 개념을 기반으로 하여 설계되었고, 객체지향 언어가 제공해 주어야 하는 추상화(Abstraction), 상속(Inheritance), 그리고 다형성(Polymorphism) 등과 같은 특성들을 모두 완벽하게 제공해 주고 있습니다. 또한, 자바의 이러한 객체지향적 특성은 분산 환경, 클라이언트/서버 기반 시스템이 갖는 요구사항도 만족시켜 줄 수 있습니다.
  • JavaNetworkProgramming . . . . 2 matches
          *Thread 클래스 : 보통 상속받아서 사용
          *Runnable 인터페이스 : Thread 클래스를 직접 상속받지 않은 클래스의 객체가 손쉽게 쓰레드를 생성할수 있도록 해줌
  • JavaScript/2011년스터디/3월이전 . . . . 2 matches
          * 프로토타입의 정의와 사용 상속부분이 다른 언어와는 다르다.
          * 자바스크립트의 상속이 기존 객체지향 언어와 다름을 알게되었다
  • JavaStudy2004/오버로딩과오버라이딩 . . . . 2 matches
          예를 들어 People클래스에 move(int aX, int aY){this.position.x += aX;this.position.y += aY;}라는 함수가 있다. 그리고 People클래스를 상속 받은 Student이라는 클래스가 있다. 근데 '학생'은 좀 멍청해서 반대로 움직인다. 그렇다면 상속받은 move함수를 재정의 해줘야한다. move(int aX, int aY){this.position.x -= aX;this.position.y -= aY;}
  • MicrosoftFoundationClasses . . . . 2 matches
         하나의 단위로서 다루어지는 프로그람안에 존재하는 프로그램 데이터의 레이블 정도로 생각하면 편하다. MFC에서는 이를 CDocument 라는 클래스로 제공하고 프로그래머는 이 클래스를 상속받아서 자기가 필요한 데이터형을 정의하고 그 데이터를 처리할 메소드를 작성하게 된다.
         View는 도큐먼트에 존재하는 데이터의 집합체를 우리가 원하는 방식으로 표현하는 메카니즘이 구현된 객체이다. document 와 마찬가지로 CView라는 클래스를 상속하여 사용하게 된다. View는 윈도우의 개념으로 보아서 프레임 윈도우 영역안의 클라이언트에 속하는 view만의 윈도우안에서 표현된다. 한개의 document 에 대해서 view는 여러개로 나누어서 만들어지는 것이 가능하다.
  • MoreEffectiveC++/Efficiency . . . . 2 matches
          * Item 24: 가상 함수, 다중 상속, 가상 기초 클래스, RTTI(실시간 형 검사)에 대한 비용을 이해하라.
         vtbl은 보통 함수 포인터 배열이다. (몇몇 컴파일러는 배열 대신에 연결 리스트(linked-list)를 사용하기도 하지만 근본적으로 같은 기능을 구현한다.) 프로그램 상에서의 그냥 선언되었든, 상속 받았뜬 이런 각각의 클래스는 모두 vtbl을 가지고 있다. 그리고 클래스의 vtbl안에 있는 인자들은 클래스에 대한 가상 함수의 구현 코드에 지칭하는 포인터들의 모임이다. 예를들어서 다음과 같이 클래스가 선언되어 있다면
  • ObjectOrientedDatabaseManagementSystem . . . . 2 matches
         OODBMS[오오디비엠에스]는 객체로서의 모델링과 데이터 생성을 지원하는 DBMS이다. 여기에는 객체들의 클래스를 위한 지원의 일부 종류와, 클래스 특질의 상속, 그리고 서브클래스와 그 객체들에 의한 메쏘드 등을 포함한다. OODBMS의 구성요소가 무엇인지에 관해 광범위하게 합의를 이룬 표준안은 아직 없으며, OODBMS 제품들은 아직 초기에 머물러 있다고 여겨진다. 그 사이에 관계형 데이터베이스에 객체지향형 데이터베이스 개념이 부가된 ORDBMS 제품이 더욱 일반적으로 시장에 출시되었다. 객체지향형 데이터베이스 인터페이스 표준은 산업계의 그룹인 ODMG (Object Data Management Group)에 의해 개발되고 있다. OMG는 네트웍 내에서 시스템들간 객체지향형 데이터 중개 인터페이스를 표준화하였다.
         객체지향형 데이터베이스 시스템은 두 개의 조건을 만족시켜야만 한다 : 그것은 DBMS이어야 하며, 또한 객체지향형 시스템이어야 한다. 즉, 가능한 범위까지 OODBMS는 객체지향형 프로그래밍 언어의 현재 작업과 함께 일관되어야만 한다. 첫 번째 기준은 영속성, 2차 저장관리, 동시성, 회복, 그리고 특별한 편의 등 다섯 개의 특질로 해석된다. 두 번째 것은 복잡한 객체들, 객체 동일성, 캡슐화, 형 또는 클래스, 상속, 지연 바인딩과 결합된 오버라이딩, 확장성과 계산 결과의 완성도 등 여덟 개의 특질로 해석된다.
  • ParametricPolymorphism . . . . 2 matches
         당연히 후자의 2개의 객체는 전자의 2개의 객체를 상속한다.
         SportCar, LuxuryCar는 Car를 상속받는 클래스 이므로 IS-A의 관계라고 할 수 있다.
  • ProjectPrometheus/Journey . . . . 2 matches
          * MockObjects 를 이용, Database 에 대해서 MockObjects Test 와 Real DB Test 를 같이 해 나가보았다. DB - Recommendation System 연결을 위해서는 RS 에서의 object 들과 DB 와의 Mapping 이 필요하다고 판단, DB Schema 를 같이 궁리한 뒤, Test 를 작성하였다. 이때 이전 기억을 떠올리면서 MockObjects Test 를 상속받아서 Real DB Test 를 작성하는 식으로 접근해봤는데 좋은 방법이라 생각.
          * TestCase 만들어 둔것을 상속 받아서, 다시 다른 테스트를 수행 시키는 기법이 정말 흥미로웠다. 진짜 신기하다. 생각하면 할수록 신기하다.
  • Refactoring/BadSmellsInCode . . . . 2 matches
          * switch-case 부분을 ExtractMethod 한 뒤, polymorphism이 필요한 class에 MoveMethod 한다. 그리고 나서 ReplaceTypeCodeWithSubclasses 나 ["ReplaceTypeCodeWithState/Strategy"] 를 할 것을 결정한다. 상속구조를 정의할 수 있을때에는 ReplaceConditionalWithPolyMorphism 한다.
         병렬 상속 구조. shotgun surgery의 특별 케이스가 된다. -_-a
  • Ruby/2011년스터디 . . . . 2 matches
          * 모듈을 이용하여 제한된 다중상속을 구현할 수 있다.
          * 루비의 클래스 상속도와 klass가 나타내는 메타클래스의 정의.(루비의 메타클래스는 싱글턴객체다?)
  • Ruby/2011년스터디/세미나 . . . . 2 matches
          * 상속
          * 상속을 통한 테스트 케이스 만들기
  • RubyLanguage/ExceptionHandling . . . . 2 matches
          * 예외 클래스들은 Exception 클래스를 상속받는다.
          * 예외 클래스를 상속하여 새로운 예외 클래스를 추가할 수 있다
  • WOWAddOn/2011년프로젝트/초성퀴즈 . . . . 2 matches
         상속할 Frame을 지정하는것 같은데 없으면 상속 안된단다. 이런..
  • ZeroPage_200_OK/note . . . . 2 matches
         ==== 상속 ====
          * 상속을 위해서는 prototype chain에 등록하면 된다.
  • 작은자바이야기 . . . . 2 matches
          * 전체적으로 다른 언어에서는 볼 수 없는 자바의 문법 + 객체지향 원칙을 중점적으로 다룬 시간이었습니다. 중간중간 다른 이야기들(builder 패턴, 저작권)이 들어갔지만 그래도 다룬 주제는 명확하다고 생각합니다. 다만 그걸 어떻게 쓰느냐는 흐릿한 느낌입니다. 그건 아마도 각 원칙들이나 interface, 객체 등에 대한 느낌을 잡기 위해서는 경험이 좀 필요하기 때문이 아닌가 싶습니다 ;;; 수경이가 말한 대로 한 번이라도 해 본 사람은 알기 쉽다는 말이 맞지 않을까 싶네요. 그리고 전체적으로 이야기를 들으면서 현재 프로젝트 중인 코드가 자꾸 생각나서 영 느낌이 찝찝했습니다. 세미나를 들으면서 코드를 생각하니까 고쳐야 될 부분이 계속 보이는군요. 그래도 나름대로 코드를 깔끔하게 해 보려고 클래스 구조도 정리를 좀 하고 했는데 더 해야 할 게 많은 느낌입니다. ㅠㅠ 그 외에도 이번 시간에 들었던 메소드의 책임이 어디에 나타나야 하는가(객체 or 메소드) 라거나 상속을 너무 겁내지 말라는 이야기는 상당히 뚜렷하게 와 닿아서 좋았습니다. 아. DIP에서 Logic과 native API 사이에 추상화 레이어를 두는 것도 상당히 좋았는데 기회가 되면 꼭 코드로 보고 싶습니다. 아마 다음에 보게 되겠지만. - [서민관]
          반면에 template method 패턴은 부모 클래스에서 전체적인 틀을 만들어 두고 행동에 해당하는 메소드를 상속 + 오버라이드 해서 확장한다.
  • 타도코코아CppStudy/0724 . . . . 2 matches
          * 객체지향, 클래스, 상속 발표
          * 객체지향, 클래스, 상속 발표
  • 05학번만의C++Study . . . . 1 match
         13. 클래스의 상속
  • 2011년독서모임 . . . . 1 match
          * [김태진] - 14살 세상끝의 좌절, 23살 세상속으로의 도전
  • AcceleratedC++/Chapter10 . . . . 1 match
          파일의 입출력을 위해서 iostream을 파일 입출력에 맞도록 상속시킨 ofstream, ifstream객체들을 이용한다. 이들 클래스는 '''<fstream>'''에 정의 되어있다.
  • AcceleratedC++/Chapter14 . . . . 1 match
          || * Handle은 객체의 참조값 [[HTML(<BR/>)]] * Handle은 복사가 가능하다 [[HTML(<BR/>)]] * Handle 객체가 다른 객체에 바인딩되어 있는지 확인이 가능 [[HTML(<BR/>)]] * Handle클래스가 가리키는 객체가 상속구조의 클래스형을 가리킨다면 virtual 에 의해 지정된 연산에대해서 다형성을 제공한다. ||
  • AspectOrientedProgramming . . . . 1 match
          1. Java와 같은 단일 상속 모델에서는 worker를 만든다는 것이 불가능할 수 있다. 어떤 클래스들은 이미 다른 클래스들로부터 확장되었을 수도 있기 때문이다. 이는 특히 클래스 계층 구조 설계가 마무리된 후, 뒤늦게 동기화의 필요성을 깨달았을 때 흔히 발생한다. 동기화를 신경 쓰지 않은 범용 클래스 라이브러리를 통해 공유 데이터에 접근하려 하는 경우가 한 예가 될 수 있다.
  • BasicJava2005/5주차 . . . . 1 match
          - 모든 예외는 Exception클래스를 상속받는다.
  • BoaConstructor . . . . 1 match
          * Control 상속, 새 Control 만드는 과정을 아직 툴 차원에선 지원하지 않는다. MFC GUI Programming 할때 많이 쓰는데. UI class 들 중복제거를 위해서라도. -_a 하긴 이건 좀 무리한 요구인가 -_-;
  • C++스터디_2005여름 . . . . 1 match
         || 05. 8. 18 || 보창 아영 유선 도연 || 상속. 도서관리 프로그램을 실제로 함께 짜보기. ||
  • CPPStudy_2005_1 . . . . 1 match
         || 8/22 || 남상협, 김태훈, 석지희 || 클래스 상속, 가상 함수 등등 실습 || - ||
  • Class . . . . 1 match
         음.. 나만의 생각일지는 모르겠는데... 물 시리즈로 모델링을 한다면 물 클래스를 상속받는 지하수 클래스, 해수 클래스 등등으로 보통 가지 않남?;
  • ComposedMethod . . . . 1 match
         초보자들은 작은 크기의 많은 메소드를 보고는, 프로그램의 진행 상황을 잘 모른다고 할 수도 있다. 하지만 경험이 쌓일수록, 잘 지어진 이름의 메세지는 코드의 흐름을 알기 쉽게 해준다. 메소드 이름을 의도가 드러나게 짓는것은 하나의 메소드 크기를 작게 하는 가장 큰 이유가 된다. 그 코드를 보는 사람들은 하나 하나의 작은 부분을 이해함으로써, 더 큰 부분을 이해할수 있게 된다. 또한 메소드를 작게 하면 버그가 발생했을때도 거기에 국한시킬 수가 있다. 뭔가 개선하기가 쉬워질 것이다. 물론 상속도 자연스럽게 할수 있다.
  • ConverterMethod . . . . 1 match
         위 예제에서 Set은 Collection처럼 동작해야 한다. 즉, 객체가 리턴한것은 수신 객체와 같은 프로토콜을 가지고 있어야 한다. C++에서는 상속으로 해결할 수 있을듯하다.
  • Cpp/2011년스터디 . . . . 1 match
          * [고한종] - 정보은닉, 상속, 생성자, 소멸자, 복사생성자... 뭐가 이리 많앜ㅋㅋㅋ // 대한민국은 윈도가 甲
  • CppStudy_2002_1 . . . . 1 match
         || 8.16 ||12.클래스 상속(72page)|| ["LinkedList/StackQueue"][[BR]]C++2팀과의 프로그래밍 잔치? 링크드 리스트로 스택,큐 구현||
  • CppStudy_2002_2 . . . . 1 match
         || 8.9 ||STL(["STL/vector/CookBook"])과 리펙토링 몇가지||STL(["STL/vector/CookBook"], ["STL"])과 12.클래스 상속||
  • CppUnit . . . . 1 match
         Test Case 가 될 Class는 {{{~cpp CppUnit::TestCase }}} 를 상속받는다.
  • Cpp에서의멤버함수구현메커니즘 . . . . 1 match
         그외 class와 instance의 생성시 vpt와, 상속 관계에 대한 pointer 정보가 더 들어 가야 합니다. 그러나 여기에서는 생각하지 않습니다. 둘째로 넘어갑니다
  • CxxTest . . . . 1 match
         단점이 있다면 테스트 상속이 안된다는 점이다. 개인적으로 MockObject 만들어 인터페이스 테스트 만든뒤 RealObject 를 만들어 테스트하는 경우가 많은 만큼 귀찮다. (테스트의 중복으로 이어지므로) 어흑.
  • Direct3D . . . . 1 match
         기본적인 클래스인 CD3DApplication 이 있고, 이것을 상속받은 CMyD3DApplication을 사용하여 하고싶은 일을 할 수 있다.
  • DirectVariableAccess . . . . 1 match
         하지만 이 클래스가 상속이 될 가능성이 있다면, setter/getter를 오버라이딩 해서 사용할수 있으므로, IndirectVariableAccess를 쓰는 것이 괜찮다.
  • DirectX2DEngine . . . . 1 match
          * 계속 구현 : Timer 클래스, 상속을 위한 처리 및 DeviceLost 처리
  • EffectiveSTL/Container . . . . 1 match
         == 상속받은 객체를 넣을때의 문제점 ==
  • EffectiveSTL/Iterator . . . . 1 match
          * 밑에께 안되는 이유는 iterator와 const_iterator는 다른 클래스이다. 상속관계도 아닌 클래스가 형변환 될리가 없다.
  • EightQueenProblem/이선우3 . . . . 1 match
         일반적인 2차원 형태의 보드를 나타낸다. 실제로 구현하는 보드는 이를 상속받아 draw() 메소드를 구현하게 함으로써 다양한 형태의 보드를 구현하는게 가능하다.
  • EnglishSpeaking/2011년스터디 . . . . 1 match
          * [송지원] - 지난번까지는 쉽지만 알아두면 좋은 표현이 많은(..은 훼이크고 역할분담하기 괜춘했던) 장면들을 선택했다고 하면 이번에는 좀 길고 빠른걸 선택했는데.. 영상속도를 따라하기가 많이 버거워서 몇 번 스크립트 외워서 하다가 급마무리 ㅋㅋㅋ 빠르게 말하는게 중요한건 아니지만 익숙해지려면 많이 따라해봐야겠어요. 롤모델로 이렇다하게 생각나는 유명인사가 많지 않아서 (그냥 이 사람의 이런 점, 저 사람의 이런 점을 본받아야겠다 뿐이었지 롤모델은 그닥..) 어머니에 대해 많이 얘기했는데 공교롭게도 순의가 그날 우리 어무이와 대면했드랬죠 ㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋㅋ
  • Gof/Adapter . . . . 1 match
         adapter 클래스는 하나의 interface를 다른 interface 에 적합하게 맞춰주기 위해 (말 그대로 어뎁터 역할~) 다중상속을 이용한다.
  • HardcoreCppStudy/두번째숙제 . . . . 1 match
          * OOP(객체지향 프로그래밍)의 주요 특징인 데이터 은닉, 캡슐화, 상속성, 추상화, 다형성에 대해서 기술하세요.
  • JUnit/Ecliipse . . . . 1 match
         다음으로 자신이 테스트를 하고 싶은 메서드에 체크를 하고 Finish 하면 TestCase를 상속받는 새 클래스를 자동으로 생성하여 줍니다.
  • Java/CapacityIsChangedByDataIO . . . . 1 match
         capacity 정보를 제공하는 것이 {{{~cpp StringBuffer }}}, Vector 밖에 없다. 다른 것들을 볼려면 상속받아서 내부 인자를 봐야 겠다.
  • JavaScript/2011년스터디 . . . . 1 match
          * [박정근] - URLHunter를 짜기는 다 했지만 timeout을 구현하지 않았더라구요. 그 부분을 더 첨가해 보고 또, prototype을 통해 상속받는 구조로 코드를 고치는게 더 좋을 것 같아 구조를 약간 변경시켜 보았습니다.(결국 스파케티를 요리하게 되었지만;;;) 그리고 또 한가지 추가하고 싶은 것은 몬스터의 형태를 바꾸어 글자를 출력하게 하는 것인데 어떻게 될지는 모르겟지만 한번 해 보아야지요ㅎㅎ
  • JavaStudy2004 . . . . 1 match
          * [JavaStudy2004/클래스상속]
  • JosephYoder방한번개모임 . . . . 1 match
          1. 상속관계 분리, 프로시저 디자인변경, 도메인 분리, 계층구조 추출 : HIGH
  • KAIST전산대학원면접/06전기 . . . . 1 match
         중요성을 강조하셨습니다. 즉 객체지향언어의 상속, 캡슐, 다형성을
  • LazyInitialization . . . . 1 match
         별로 안쓸듯하지만... 켄트벡 왈 : 일단은 ExplicitInitialzation으로 출발을 하고, 상속될 거 같으면 LazyInitialization을 사용한다.
  • MFC/CollectionClass . . . . 1 match
          ''CTypedPtrList의 기본 클래스인 CObList로 부터 상속받은 것들''
  • MFC/Control . . . . 1 match
         하나의 컨트롤은 클래스와 연계될 수도, 안될 수도 있다. 정적 컨트롤의 경우 클래스가 필요없을 것 같지만 CStatic 이라는 클래스를 통해서 모양을 변경하는 것이 가능하다. 마찬가지로 버튼 컨트롤들의 경우도 대부분 Dialog 객체를 통해서 처리가 된다. CButton 클래스의 경우에는 컨트롤을 관리하는데있어서 객체가 필요할 경우에 이용하게 된다. 이러한 모든 컨트롤들은 모두 윈도우의 일종이기 때문에 CWnd 에서 상속된 클래스를 이용한다.
  • MFC/MessageMap . . . . 1 match
          ''매시지를 처리할 수 있는 클래스는 MFC의 계층구조상 CCmdTarget 클래스를 상속받은 클래스라면 어디서든 가능하다.''
  • MFC/Print . . . . 1 match
         출력을 구현하기 위해서는 view 클래스로 부터 상속받은 수많은 함수들을 오버라이딩 해야한다.
  • MFC/Serialize . . . . 1 match
          기본 클래스로부터 상속된 멤버들을 포함하여 CXXXDoc객체가 적절하게 동적으로 생성될 수 있도록 하는데 필요한 것이다.
  • MFC/Socket . . . . 1 match
          * 서버를 구현하기 위해서 CSocket을 상속받아서 클래스를 하나 생성한다. CSocket은 MFC에서 제공해주는 클래스
  • MFCStudy_2001/진행상황 . . . . 1 match
          * 이전까지 - C++ 가상함수, 상속에 대한 개념을 공부하고 윈도우에서 그림그리는 원리를 알았습니다. ㅜ.ㅜ
  • MFCStudy_2002_1 . . . . 1 match
         || 8/16(금) || 오목 구현 끝. 상속 이해. OOP(CRC), Simulation || . ||
  • MFCStudy_2002_2 . . . . 1 match
          * 아마.. 내가 이정도 때 했구나.. -_-;; 그때 딱 도움 되었던게.. 남의 source 훔쳐 보기. -_-+ www.codeguru.com 가서 많이 받아서 봤지.. -_-;; MFC 잘쓰는데는 꽤나 도움이 될거구만.. 뭐.. 거 가보면 mfc 내에서 엄청나게 상속받아서 지들이 만들어 놓은게 많아서 왠만한건 분석도 못하는게 많이 있지만. --; 그래도 도움 짱이지... 지금 쓰질 않아서.. -_-; 기억이 하나도 안나는구만. 에또.. 제프 아저씨와 찰스 아저씨의 책을 읽어 보도록 해요. --; 세미나 하는 사람들한테 물어봐 그건.. --;; 그럼.. 휘릭~ -- guts
  • MoreEffectiveC++ . . . . 1 match
          * Item 24: Understand the costs of virtual functions, multiple ingeritance, virtual base classes, and RTTI [[BR]] - 가상 함수, 다중 상속, 가상 기초 클래스, RTTI(실시간 형 검사)에 대한 비용을 이해하라
  • MoreEffectiveC++/C++이 어렵다? . . . . 1 match
          [http://zeropage.org/moin/moin.cgi/MoreEffectiveC_2b_2b_2fEfficiency#head-4e0fa0edba4b5f9951ea824805784fcc64d3b058 Item 24 다중 상속 관련]
  • MoreMFC . . . . 1 match
         떡하니 source를 보면 어떻게 돌아가는 거야.. --; 라는 생각이 든다.. 나도 잘모른다. 그런데 가장 중요한것은 global영역에 myApp라는 변수가 선언되어 있다는 사실이다. myApp 라는 instance가 이 프로그램의 instance이다. --a (최초의 프로그램으로 인스턴스화..) 그리고, CWinApp를 상속한 CMyApp에 있는 유일한 함수 initInstance 에서 실제 window를 만들어준다.(InitInstance함수는 응용 프로그램이 처음 생길 때, 곡 window가 생성되기전, 응용 프로그램이 시작한 바로 다음에 호출된다) 이 부분에서 CMainWindow의 instance를 만들어 멤버 변수인 m_pMainWnd로 pointing한다. 이제 window는 생성 되었다. 그렇지만, 기억해야 할 것이 아직 window는 보이지 않는다는 사실이다. 그래서, CMainWindow의 pointer(m_pMainWindow)를 통해서 ShowWindow와 UpdateWindow를 호출해 준다. 그리고 TRUE를 return 함으로써 다음 작업으로 진행 할 수 있게 해준다.... 흘. 영서라 뭔소린지 하나도 모르겠네~ 캬캬.. ''' to be continue..'''[[BR]]
  • OOP . . . . 1 match
          * [Inheritance](상속)
  • OperatingSystemClass/Exam2002_2 . . . . 1 match
          * 앞에서 완성된 class를 상속받아서 binary semaphore class 를 구현.
  • PairProgramming . . . . 1 match
         IConnection을 이용해 각각의 Connection에 대해 단일의 인터페이스를 제공하고 IConnection을 구현하는 MySqlConnection , SqlConnection , OciConnection을 만들자는 것이 나의 생각이었다. 파트너는 switch구문을 이용해 클래스의 상속 구조를 없애는 것과 비교해서 어떠한 이점이 있는가에 대해 질문했다. 이것은 장시간의 토론으로 이어졌다.
  • PatternOrientedSoftwareArchitecture . . . . 1 match
          * Layering Through Inheritance : 상속 관계로 레이어 패턴을 구현. 현재 뜨는 OOP로 할 수 있다.
  • PyGame . . . . 1 match
         pygame.Surface 를 상속받은 새 클래스를 만들 수가 없다. 이상하게도 다음 코드가 Attribute 에러가 난다. 적절히 제약부분에 대해서 생각을 해야 할듯.
  • PyIde/Exploration . . . . 1 match
         약간만 Refactoring 해서 쓰면 될듯. Runner abstract class 추출하고, TestResult 상속받은 클래스 만들고,. Test Loading 은 TestLoader 그대로 쓰면 될것 같다.
  • PyUnit . . . . 1 match
         PyUnit에서는 TestCase는 unittest모듈의 TestCase 클래스로서 표현된다.testcase 클래스를 만들려면 unittest.TestCase를 상속받아서 만들면 된다.
  • PythonMultiThreading . . . . 1 match
         사용하는 방법은 매우 간단. Thread class 를 상속받은뒤 Java 처럼 start 메소드를 호출해주면 run 메소드에 구현된 내용이 multithread 로 실행된다.
  • RandomWalk2 . . . . 1 match
         만약 자신이 작성한 코드를 위키에 올리고 싶다면 {{{RandomWalk2/아무개}}} 패턴의 페이지 이름을 만들고 거기에 코드를 넣으면 된다. 이 때, 변경사항을 하나씩 완료함에 따라, 코드의 어디를 어떻게 바꿨는지(예컨대, 새로 클래스를 하나 만들어 붙이고, 기존 클래스에서 어떤 메쏘드를 끌어온 뒤에 다른 클래스가 새 클래스를 상속하게 했다든지 등) 그 변천 과정과 자신의 사고 과정을 요약해서 함께 적어주면 자신은 물론 남에게도 많은 도움이 될 것이다. 또한, 변경사항을 하나 완료하는 데 걸린 시간을 함께 리포팅하면 한가지 척도가 될 수 있겠다.
  • RoboCode . . . . 1 match
         각 로보코드 참가자는 자바 언어의 요소를 사용하여 자신의 로봇을 만들면서 자바가 갖고 있는 상속성, 다형성, 이벤트 처리 및 내부 클래스 다루는 방법을 배우게 됩니다
  • SimpleDelegation . . . . 1 match
         Collection처럼 작동하지만 더 많은 기능을 가지고 있는 객체를 만들고 싶다. 상속받지 말고, Collection을 지칭하도록 하자.(위임하도록 하자.)
  • SingletonPattern . . . . 1 match
         적절한 상속관계와 오브젝트를 인자로 넘겨주는 방법으로 Singleton 의 남용을 적절하게 줄일 수 있는 경우가 많다.
  • SmallTalk/강좌FromHitel/소개 . . . . 1 match
         경GUI), 모든 것이 객체이며 이 객체들 간에 존재하는 상속성, 그리고 기억 공간
  • SmallTalk_Introduce . . . . 1 match
         경GUI), 모든 것이 객체이며 이 객체들 간에 존재하는 상속성, 그리고 기억 공간
  • StarCraft . . . . 1 match
         그때의 기억을 되살려 클레스의 기본적이고도 강력한 기능중 하나인 상속성을 쉽게 이해하고 활용할수 있도록 문제를 생각해 봤다.
  • VonNeumannAirport/Leonardong . . . . 1 match
          현재 요구사항에 맞추더라도 행렬에 해당하는 기능을 정리하고, 트래픽이나 거리 계산에는 행렬을 이용하는 식이 되어야 할 것이다. 지금처럼 상속받을 까닭이 없다.
  • django/RetrievingObject . . . . 1 match
         사용자는 values함수를 이용해서 원하는 속성을 지정할 수 있다. 이는 검색 조건을 만족하는 레코드의 필요한 속성만을 이용하므로 효율적이다. 또한 values함수는 QuerySet을 상속한 ValuesQuerySet을 리턴하므로 다시 위에서 사용한 검색 조건을 사용할 수 있다. 하지만 ValuesQuerySet은 사전형(dictionary) 자료구조를 가지고 있기 때문에, 많은 수의 레코드를 얻어오기에는 부적절하다. 다음은 사원 정보에서 이메일 속성만을 얻어온다.
  • html5/richtext-edit . . . . 1 match
          * contenteditable의 상태는 상속되므로 편집가능한 요소 하위의 요소는 모두 편집가능
  • 데블스캠프2009/수요일/OOP/서민관 . . . . 1 match
         //상속
  • 데블스캠프2010/다섯째날/ObjectCraft . . . . 1 match
         5. 상속과 가상함수
  • 데블스캠프2012/다섯째날/후기 . . . . 1 match
          * [이재형] - 오버로딩이나, 탬플릿 까지는 어렵지 않게 이해했는데 그 뒤부터 클래스, 구조체, 생성자와 소멸자, 상속, 가상함수 등등 부족한게 많아서 정말 멘붕에 멘붕을 거듭했습니다. 그래도 정말정말 How에대한 관점으로 공부해야겠다는 필요성과 더불어 이번 방학 공부에 동기부여가 잘 될 것 같아서 좌절감만 드는 것이 아니였습니다. 좋은 어려움이였던 것 같습니다.
  • 레밍즈프로젝트/그리기DC . . . . 1 match
         TODO. 출력 인터페이스로 상속 받아오기
  • 레밍즈프로젝트/연락 . . . . 1 match
         1. 먼저 윈도 구성부분. 버튼, 게임화면(기능상 미니맵도 포함), 이 부분들... CWnd 를 상속해서 커스텀 하면 구현 할 수 있을거래-_- 아마 그 부분 프로토타입을 작성해 보아야 할듯 싶어. 석천이형이 시간이 허락된다면 게시판에 자료들을 올려 주신다고 하셨는데... 시간이 되실지...흠... (게임화면부분, 버튼부분..)(주호 너가 하던 방식이 거의 맞는듯 싶어. 난 CWnd나 그 부분에 대해서 자료조사도 안하고 테스트도 안해봐서 뭐라고 할 처지가 못돼;; 그런데도 괜히 참견한것 같아서 좀 미안하네;; 쏘리;;)
  • 레밍즈프로젝트/프로토타입/에니메이션 . . . . 1 match
         에니메이션이 필요한 객체들은 이 클래스를 상속 받음으로서 에니메이션 처리를 할 수 있다.
  • 삼총사CppStudy . . . . 1 match
         || 상속, 가상함수 || 이선호 || 8/14 || _ ||
  • 이영호/미니프로젝트#1 . . . . 1 match
         // 클래스의 상속성으로 인해 기존의 클래스를 고치지 않아서 인것 같다.
  • 정모/2004.10.5 . . . . 1 match
          * 현재 클래스. static. 상속 배우는 차례
  • 정모/2011.3.7 . . . . 1 match
          * 정모에서 세미나와 페챠쿠챠만 참여하게 되었습니다. OMS할 때는 학교 컴퓨터를 이용했는데, BGM과 동영상이 재생이 안되더군요. 안타까웠습니다. 그리고 루비를 보면서 느낀게 참 신기하더군요. 가장 신기한게 'nil'이었습니다. 보면서 여러가지 질문이 생각나더라고요. ''왜 nil이 라고 용어를 붙여놨어. Null이랑 헷갈리게!'', ''실제로 가볍게 활용을 하려면 어떻게 이용해봐야 할까?'', ''루비의 가장 큰 특징이 뭐지? 왜 좋다고 이야기 할까?'' 블라블라~. 그리고 루비 위키페이지에 적어놓으셨던 문법들이 정상적으로 작동하지 않는 걸 깨달았습니다. '<'로 상속이 안돼! 이 깍쟁이 irb야~ 내가 너를 Some이라 불러줬으니 나에게로 와서 Some2가 되어달란 말이야 ㅜㅜ. 앞으로는 다음에 언어 세미나를 들을 때 ''왜 이 언어와 문법이 등장하였는지''를 좀 생각하면서 들어야겠습니다. 그냥 생각없이 들으니까 금방 까먹어 버리네요. - [박성현]
  • 코바예제/시계 . . . . 1 match
         위의 IDL을 컴파일하면 스텁과 스켈레톤 코드가 생성된다. 컴파일러가 ObjTimeServer_Skeleton.java라는 이름의 파일을 생성하였으며, 여기에는 서버 쪽에서 사용되는 스켈레톤 코드가 들어 있다고 가정하자. 이제 이 IDL에서 지정된 인터페이스를 갖는 객체를 구현해야만 한다. 이 말은 서버 코드, 즉 구현을 작성해야 한다는 것이다. 그러한 구현 객체 클래스를 작성하기 위해서는 IDL 컴파일러에 의해 만들어진 스켈레톤 클래스와 결합해야 한다. 이 결합은 상속 또는 위임을 사용해서 이루어질 수 이다.
  • 타도코코아CppStudy/0811 . . . . 1 match
         || ZeroWiki:RandomWalk || 정우||Upload:class_random.cpp . || 왜 Worker가 Workspace를 상속받지? 사람이 일터의 한 종류야?--; 또 에러뜨네 cannot access private member. 이건 다른 클래스의 변수를 접근하려고 해서 생기는 에러임. 자꾸 다른 클래스의 변수를 쓰려 한다는건 그 변수가 이상한 위치에 있다는 말도 됨 ||
Found 143 matching pages out of 7555 total pages (5000 pages are searched)

You can also click here to search title.

Valid XHTML 1.0! Valid CSS! powered by MoniWiki
Processing time 0.0580 sec