<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/">
  <channel>
    <title>상속 on Sobamemil</title>
    <link>https://blog.sobamemil.com/en/tags/%EC%83%81%EC%86%8D/</link>
    <description>Recent content in 상속 on Sobamemil</description>
    <image>
      <title>Sobamemil</title>
      <url>https://blog.sobamemil.com/images/og-image.png</url>
      <link>https://blog.sobamemil.com/images/og-image.png</link>
    </image>
    <generator>Hugo</generator>
    <language>en</language>
    <lastBuildDate>Mon, 09 Mar 2020 17:19:46 +0900</lastBuildDate>
    <atom:link href="https://blog.sobamemil.com/en/tags/%EC%83%81%EC%86%8D/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>C&#43;&#43; Programming Ch.10 Exercise 8 Solution</title>
      <link>https://blog.sobamemil.com/en/posts/118-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-10%EC%9E%A5-8%EB%B2%88/</link>
      <pubDate>Mon, 09 Mar 2020 17:19:46 +0900</pubDate>
      <guid>https://blog.sobamemil.com/en/posts/118-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-10%EC%9E%A5-8%EB%B2%88/</guid>
      <description>&lt;p&gt;&lt;b&gt;Problem:&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;문제 7을 푸는 다른 방법을 소개한다.&lt;/p&gt;
&lt;p&gt;bigger() 함수의 다음 라인에서 &amp;gt; 연산자 때문에&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;&lt;/th&gt;
          &lt;th&gt;&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;1&lt;/td&gt;
          &lt;td&gt;if(a &amp;gt; b) return a;&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;T에 Circle과 같은 클래스 타입이 대입되면, 구체화가 실패하여 컴파일 오류가 발생한다.&lt;/p&gt;
&lt;p&gt;이 문제를 해결하기 위해 다음과 같은 추상 클래스 Comparable을 제안한다.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;&lt;/th&gt;
          &lt;th&gt;&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;1  2  3  4  5  6&lt;/td&gt;
          &lt;td&gt;class Comparable {  public:  virtual bool operator &amp;gt; (Comparable&amp;amp; op2) = 0; // 순수 가상 함수  virtual bool operator &amp;lt; (Comparable&amp;amp; op2) = 0; // 순수 가상 함수  virtual bool operator == (Comparable&amp;amp; op2) = 0; // 순수 가상 함수  };&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Circle 클래스가 Comparable을 상속받아 순수 가상 함수를 모두 구현하면, 앞의 bigger() 템플릿 함수를 사용하는데 아무 문제가 없다.&lt;/p&gt;</description>
    </item>
    <item>
      <title>C&#43;&#43; Programming Ch.8 Exercise 9 Solution</title>
      <link>https://blog.sobamemil.com/en/posts/110-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-8%EC%9E%A5-9%EB%B2%88/</link>
      <pubDate>Mon, 09 Mar 2020 15:13:20 +0900</pubDate>
      <guid>https://blog.sobamemil.com/en/posts/110-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-8%EC%9E%A5-9%EB%B2%88/</guid>
      <description>&lt;p&gt;&lt;b&gt;Problem:&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;비행기 예약 프로그램을 작성하라. 이 문제는 여러 개의 클래스와 객체들을 다루는 연습을 위한 것이다. 클래스 사이의 상속 관계는 없다.&lt;/p&gt;
&lt;p&gt;항공사 이름은 &#39;한성항공&#39;이고, 8개의 좌석을 가진 3대의 비행기로 서울 부산 간 운항 사업을 한다.&lt;/p&gt;
&lt;p&gt;각 비행기는 하루에 한 번만 운항하며 비행시간은 07시, 12시, 17시이다. 비행기 예약 프로그램은 다음의 기능을 가진다.&lt;/p&gt;
&lt;p&gt;● 예약 : 비행 시간, 사용자의 이름, 좌석 번호를 입력받아 예약한다.&lt;/p&gt;
&lt;p&gt;● 취소 : 비행 시간, 사용자의 이름, 좌석 번호를 입력받고 예약을 취소한다.&lt;/p&gt;</description>
    </item>
    <item>
      <title>C&#43;&#43; Programming Ch.8 Exercise 8 Solution</title>
      <link>https://blog.sobamemil.com/en/posts/109-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-8%EC%9E%A5-8%EB%B2%88/</link>
      <pubDate>Mon, 09 Mar 2020 14:18:19 +0900</pubDate>
      <guid>https://blog.sobamemil.com/en/posts/109-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-8%EC%9E%A5-8%EB%B2%88/</guid>
      <description>&lt;p&gt;&lt;b&gt;Problem:&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;다음 그림과 같은 상속 구조를 갖는 클래스를 설계한다.&lt;/p&gt;
&lt;p&gt;모든 프린터는 모델명(model), 제조사(manufacturer), 인쇄 매수(printedCount), 인쇄 종이 잔량(availableCount)을 나타내는 정보와 print(int pages) 멤버 함수를 가지며, print()가 호출할 때마다 pages 매의 용지를 사용한다.&lt;/p&gt;
&lt;p&gt;잉크젯 프린터는 잉크 잔량(availableInk) 정보와 printInkJet(int pages) 멤버 함수를 추가적으로 가지며, 레이저 프린터는 토너 잔량(availableToner) 정보와 역시 printLaser(int pages) 멤버 함수를 추가적으로 가진다.&lt;/p&gt;
&lt;p&gt;각 클래스에 적절한 접근 지정으로 멤버 변수와 함수, 생성자, 소멸자를 작성하고, 다음과 같이 실행되도록 전체 프로그램을 완성하라.&lt;/p&gt;</description>
    </item>
    <item>
      <title>C&#43;&#43; Programming Ch.8 Exercise 7 Solution</title>
      <link>https://blog.sobamemil.com/en/posts/108-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-8%EC%9E%A5-7%EB%B2%88/</link>
      <pubDate>Mon, 09 Mar 2020 14:04:17 +0900</pubDate>
      <guid>https://blog.sobamemil.com/en/posts/108-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-8%EC%9E%A5-7%EB%B2%88/</guid>
      <description>&lt;p&gt;&lt;b&gt;Problem:&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;아래와 같은 BaseMemory 클래스를 상속받는 ROM(Read Only Memory), RAM 클래스를 작성하라.&lt;/p&gt;
&lt;p&gt;BaseMemory에 필요한 코드를 수정 추가하여 적절히 완성하라.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;&lt;/th&gt;
          &lt;th&gt;&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;1  2  3  4  5&lt;/td&gt;
          &lt;td&gt;class BaseMemory{  char *mem;  protected:  BaseMemory(int size) { mem = new char [size]; }  };&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;ROM은 읽기 전용 메모리이므로 작동 중에 값을 쓸 수가 없기 때문에, 공장에서 생산할 때 생산자가 요청한 데이터로 초기화 하는데 이 작업을 굽는다(burn)라고 한다. 그러므로 ROM은 반드시 생성자에서 burn 작업이 일어나야 한다.&lt;/p&gt;</description>
    </item>
    <item>
      <title>C&#43;&#43; Programming Ch.8 Exercise 5 Solution</title>
      <link>https://blog.sobamemil.com/en/posts/106-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-8%EC%9E%A5-5%EB%B2%88/</link>
      <pubDate>Mon, 09 Mar 2020 13:36:05 +0900</pubDate>
      <guid>https://blog.sobamemil.com/en/posts/106-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-8%EC%9E%A5-5%EB%B2%88/</guid>
      <description>&lt;p&gt;&lt;b&gt;Problem:&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;문제 5~6에 적용되는 BaseArray 클래스는 다음과 같다.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;&lt;/th&gt;
          &lt;th&gt;&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;1  2  3  4  5  6  7  8  9  10  11  12&lt;/td&gt;
          &lt;td&gt;class BaseArray {  int capacity; // 배열의 크기  int *mem; // 정수 배열을 만들기 위한 메모리의 포인터  protected: // 생성자가 protected  BaseArray(int capacity=100){  this-&amp;gt;capacity = capacity; mem = new int [capacity];  }  ~BaseArray() { delete [] mem; }  void put(int index, int val) { mem[index] = val; }  int get(int index) { return mem[index]; }  int getCapacity() { return capacity; }  };&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;BaseArray를 상속받아 큐처럼 작동하는 MyQueue 클래스를 작성하라.&lt;/p&gt;</description>
    </item>
    <item>
      <title>C&#43;&#43; Programming Ch.8 Exercise 4 Solution</title>
      <link>https://blog.sobamemil.com/en/posts/105-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-8%EC%9E%A5-4%EB%B2%88/</link>
      <pubDate>Mon, 09 Mar 2020 13:26:22 +0900</pubDate>
      <guid>https://blog.sobamemil.com/en/posts/105-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-8%EC%9E%A5-4%EB%B2%88/</guid>
      <description>&lt;p&gt;&lt;b&gt;Problem:&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;문제 3~4에 적용되는 2차원 상의 한 점을 표현하는 Point 클래스가 있다.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;&lt;/th&gt;
          &lt;th&gt;&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;1  2  3  4  5  6  7  8  9&lt;/td&gt;
          &lt;td&gt;class Point {  int x,y;  public:  point(int x, int y) { this-&amp;gt;x = x; this-&amp;gt;y = y; }  int getX(){ return x; }  int getY(){ return y; }  protected:  void move(int x, int y) { this-&amp;gt;x = x; this-&amp;gt;y = y; }  };&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;다음 main() 함수가 실행되도록 Point 클래스를 상속받는 ColorPoint 클래스를 작성하고, 전체 프로그램을 완성하라.&lt;/p&gt;</description>
    </item>
    <item>
      <title>C&#43;&#43; Programming Ch.8 Exercise 3 Solution</title>
      <link>https://blog.sobamemil.com/en/posts/104-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-8%EC%9E%A5-3%EB%B2%88/</link>
      <pubDate>Mon, 09 Mar 2020 13:18:25 +0900</pubDate>
      <guid>https://blog.sobamemil.com/en/posts/104-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-8%EC%9E%A5-3%EB%B2%88/</guid>
      <description>&lt;p&gt;&lt;b&gt;Problem:&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;문제 3~4에 적용되는 2차원 상의 한 점을 표현하는 Point 클래스가 있다.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;&lt;/th&gt;
          &lt;th&gt;&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;1  2  3  4  5  6  7  8  9&lt;/td&gt;
          &lt;td&gt;class Point {  int x,y;  public:  point(int x, int y) { this-&amp;gt;x = x; this-&amp;gt;y = y; }  int getX(){ return x; }  int getY(){ return y; }  protected:  void move(int x, int y) { this-&amp;gt;x = x; this-&amp;gt;y = y; }  };&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;다음 main() 함수가 실행되도록 Point 클래스를 상속받은 ColorPoint 클래스를 작성하고, 전체 프로그램을 완성하라.&lt;/p&gt;</description>
    </item>
    <item>
      <title>C&#43;&#43; Programming Ch.8 Exercise 2 Solution</title>
      <link>https://blog.sobamemil.com/en/posts/103-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-8%EC%9E%A5-2%EB%B2%88/</link>
      <pubDate>Mon, 09 Mar 2020 13:11:20 +0900</pubDate>
      <guid>https://blog.sobamemil.com/en/posts/103-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-8%EC%9E%A5-2%EB%B2%88/</guid>
      <description>&lt;p&gt;&lt;b&gt;Problem:&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;문제 1~2에 적용되는 원을 추상화한 Circle 클래스가 있다.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;&lt;/th&gt;
          &lt;th&gt;&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;1  2  3  4  5  6  7  8&lt;/td&gt;
          &lt;td&gt;class Circle{  int radius;  public:  Circle(int radius=0) { this-&amp;gt;radius = radius; }  int getRadius() { return radius; }  void setRadius(int radius) { this-&amp;gt;radius = radius; }  double getArea() { return 3.14*radius*radius; }  };&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;다음과 같이 배열을 선언하여 다음 Execution Result가 나오도록 Circle을 상속받은 NamedCircle 클래스와 main() 함수 등 필요한 함수를 작성하라.&lt;/p&gt;</description>
    </item>
    <item>
      <title>C&#43;&#43; Programming Ch.8 Exercise 1 Solution</title>
      <link>https://blog.sobamemil.com/en/posts/102-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-8%EC%9E%A5-1%EB%B2%88/</link>
      <pubDate>Mon, 09 Mar 2020 12:56:19 +0900</pubDate>
      <guid>https://blog.sobamemil.com/en/posts/102-%EB%AA%85%ED%92%88-c-programming-%EC%8B%A4%EC%8A%B5-%EB%AC%B8%EC%A0%9C-8%EC%9E%A5-1%EB%B2%88/</guid>
      <description>&lt;p&gt;&lt;b&gt;Problem:&lt;/b&gt;&lt;/p&gt;
&lt;p&gt;문제 1~2에 적용되는 원을 추상화한 Circle 클래스가 있다.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;&lt;/th&gt;
          &lt;th&gt;&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;1  2  3  4  5  6  7  8&lt;/td&gt;
          &lt;td&gt;class Circle{  int radius;  public:  Circle(int radius=0) { this-&amp;gt;radius = radius; }  int getRadius() { return radius; }  void setRadius(int radius) { this-&amp;gt;radius = radius; }  double getArea() { return 3.14*radius*radius; }  };&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;다음 코드가 실행되도록 Circle을 상속받은 NamedCircle 클래스를 작성하고 전체 프로그램을 완성하라.&lt;/p&gt;
&lt;table&gt;
  &lt;thead&gt;
      &lt;tr&gt;
          &lt;th&gt;&lt;/th&gt;
          &lt;th&gt;&lt;/th&gt;
      &lt;/tr&gt;
  &lt;/thead&gt;
  &lt;tbody&gt;
      &lt;tr&gt;
          &lt;td&gt;1  2&lt;/td&gt;
          &lt;td&gt;NamedCircle waffle(3, &amp;quot;waffle&amp;quot;); // 반지름이 3이고 이름이 waffle인 원  waffle.show();&lt;/td&gt;
      &lt;/tr&gt;
  &lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;&lt;b&gt;Execution Result:&lt;/b&gt;&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
