
과제(11) - C언어 고급 실습
문서 내 토픽
-
1. 클래스 상속이 과제에서는 클래스 상속에 대해 다룹니다. Point 클래스를 선언하고 이를 상속받는 ColorPoint 클래스를 만듭니다. 또한 WideTV 클래스가 TV 클래스를 상속받고, SmartTV 클래스가 WideTV 클래스를 상속받는 예제를 다룹니다. 이를 통해 상속의 개념과 구현 방법을 이해할 수 있습니다.
-
2. 동적 바인딩이 과제에서는 동적 바인딩에 대해 다룹니다. Base 클래스의 멤버 함수 f()에 virtual 키워드를 붙여 가상 함수로 만들고, Derived 클래스에서 이를 오버라이딩하는 예제를 통해 동적 바인딩의 개념과 동작 방식을 이해할 수 있습니다.
-
3. 추상 클래스이 과제에서는 추상 클래스에 대해 다룹니다. Calculator 추상 클래스를 선언하고, 이를 상속받는 GoodCalc 클래스에서 순수 가상 함수를 구현하는 예제를 통해 추상 클래스의 개념과 활용 방법을 이해할 수 있습니다.
-
4. 가상 소멸자이 과제에서는 가상 소멸자에 대해 다룹니다. Base 클래스와 Derived 클래스 모두 소멸자를 가상 함수로 선언하고, 동적 메모리 할당 및 해제 과정에서 가상 소멸자가 어떻게 동작하는지 확인할 수 있습니다.
-
1. 클래스 상속클래스 상속은 객체지향 프로그래밍의 핵심 개념 중 하나입니다. 상위 클래스의 속성과 메서드를 하위 클래스에서 재사용할 수 있어 코드의 재사용성을 높이고 유지보수성을 향상시킬 수 있습니다. 또한 상속을 통해 하위 클래스에서 상위 클래스의 기능을 확장하거나 재정의할 수 있어 유연성 있는 설계가 가능합니다. 다만 상속 계층이 복잡해지면 코드의 이해도가 낮아질 수 있으므로 적절한 수준의 상속 관계를 유지하는 것이 중요합니다. 전반적으로 클래스 상속은 객체지향 프로그래밍에서 매우 유용한 기능이라고 볼 수 있습니다.
-
2. 동적 바인딩동적 바인딩은 객체지향 프로그래밍에서 매우 중요한 개념입니다. 동적 바인딩을 통해 실행 시간에 적절한 메서드를 호출할 수 있어 코드의 유연성과 확장성이 높아집니다. 특히 상속 관계에서 동적 바인딩은 매우 유용하게 사용될 수 있는데, 하위 클래스에서 상위 클래스의 메서드를 재정의하면 해당 객체의 실제 타입에 따라 적절한 메서드가 호출됩니다. 이를 통해 다형성을 구현할 수 있어 코드의 재사용성과 유지보수성이 향상됩니다. 다만 동적 바인딩이 잘못 사용되면 예기치 않은 동작이 발생할 수 있으므로 주의해야 합니다. 전반적으로 동적 바인딩은 객체지향 프로그래밍에서 매우 중요한 개념이라고 볼 수 있습니다.
-
3. 추상 클래스추상 클래스는 객체지향 프로그래밍에서 매우 유용한 개념입니다. 추상 클래스는 구체적인 구현 없이 공통된 속성과 메서드를 정의할 수 있어 코드의 재사용성을 높일 수 있습니다. 또한 추상 클래스를 상속받은 하위 클래스에서 추상 메서드를 구현하도록 강제함으로써 일관된 인터페이스를 제공할 수 있습니다. 이를 통해 코드의 유지보수성과 확장성이 향상됩니다. 다만 추상 클래스는 인스턴스화할 수 없으므로 객체 생성에 제한이 있다는 단점이 있습니다. 전반적으로 추상 클래스는 객체지향 프로그래밍에서 매우 유용한 개념이라고 볼 수 있습니다.
-
4. 가상 소멸자가상 소멸자는 객체지향 프로그래밍에서 매우 중요한 개념입니다. 가상 소멸자를 사용하면 상속 관계에서 적절한 소멸자가 호출되어 객체의 메모리 누수를 방지할 수 있습니다. 특히 기반 클래스의 소멸자가 가상 소멸자로 선언되어 있지 않으면 하위 클래스의 소멸자가 호출되지 않을 수 있어 메모리 누수가 발생할 수 있습니다. 따라서 상속 관계에 있는 클래스의 소멸자는 모두 가상 소멸자로 선언하는 것이 중요합니다. 이를 통해 객체의 안전한 소멸을 보장할 수 있습니다. 전반적으로 가상 소멸자는 객체지향 프로그래밍에서 매우 중요한 개념이라고 볼 수 있습니다.
[건국대학교 컴퓨터프로그래밍2 A+][2024 Ver] 과제11
본 내용은 원문 자료의 일부 인용된 것입니다.
2024.08.16
-
[A+ 성적증명] 건국대 컴퓨터프로그래밍 2 4주차 과제(강의자료 p.6~19) 7페이지
건국대 컴퓨터프로그래밍2 4주차(p.6~19) 과제 과제(1) 4주차 부여 C언어 고급 실습 p.6 6 s가 포인터 변수이므로 %p로 출력 시 JANE이라는 문자열의 포인터가 출력. 6&s는 포인터 변수의 포인터가 출력. 8문자열 출력을 하기 위해서는 %s라는 format specifier와 문자열 포인터값을 넣어주면 됨. 8배열은 0부터 시작하기 때문에 s[2]면 세 번째 원소인 N이 출력. p.7 5char a[] = “JANE“; 은 문자열을 배열로 나타냄. 6a는 배열의 식별자로 혼자 쓰였기 때문에 첫 번째 원소의 포인터가 ...2022.07.08· 7페이지 -
[A+ 성적증명] 건국대 컴퓨터프로그래밍 2 7주차 과제(강의자료 p.38~44) 9페이지
건국대 컴퓨터프로그래밍2 7주차(p.38~44) 과제 과제(4) 7주차 부여 C언어 고급 실습 p38~p44 p.38 2qsort함수를 쓰기 위해서는 stdlib 헤더파일을 포함해야 함. 4qsort함수에 들어갈 비교함수/a>b일 때 1,a=b일 때 0,avoid포인터형이므로 casting해주어야 하고 strcmp함수의 parameter에는 char *형이 들어가야 하므로 *연산을 한번 해주어야 함. 6const char *형은 data영역에 문자열이 생성되고 첫 번째 원소의 포인터가 stack영역의 포인터 변수 a에 저장되는 것이...2022.07.08· 9페이지 -
[건국대학교 컴퓨터프로그래밍2 A+][2024 Ver] 과제5 12페이지
과제(5) | 8주차 | C언어 고급 실습 |1번① 코드② 결과③ 설명구조체를 정의 후 패킹한다. 이 구조체는 int타입 변수 id, char타입 변수 pass, char 포인터타입 변수 name으로 이루어졌으므로 크기는 4 + 1 + 8 = 13이다. 이 구조체 타입은 User1으로 선언할수있다.구조체를 정의한다. 이 구조체는 int타입 변수 id, char타입 변수 pass, char 포인터타입 변수 name으로 이루어졌지만 패딩이 있어 크기는 4 + 4 + 8 = 16이다. 이 구조체 타입은 User2로 선언할수있다.User1...2024.08.14· 12페이지 -
[건국대학교 컴퓨터프로그래밍2 A+][2024 Ver] 과제2 9페이지
과제(2) | 4주차 | C언어 고급 실습 |1번① 코드② 결과③ 설명int원소 3개를 가지는 배열 arr을 생성하고 각 원소에 5, 6, 7을 넣어 초기화한다.int 포인터 타입 변수 ptr 생성 후 arr배열의 첫번째 원소의 포인터를 넣어서 초기화한다.printf 함수로 ① arr배열의 첫번째 원소의 포인터, ② ptr변수 자체의 포인터타입, ③ ptr에 저장된 값 을 %p 형식으로 출력한다.printf함수로 ① arr배열의 0번 원소가 저장한 값, ② arr배열의 1번 원소가 저장한 값( *(arr + 1) = arr[1]이다...2024.08.14· 9페이지 -
[건국대학교 컴퓨터프로그래밍2 A+][2024 Ver] 과제1 11페이지
과제(1) | 3주차 | C언어 고급 실습 |1번① 코드② 결과③ 설명char 포인터 변수 s에 Kate배열의 첫번째 원소의 포인터값이 들어간다. printf를 이용하여 s의 첫번째 원소의 포인터값, s배열 자체의 포인터값을 출력한다. 그 뒤 printf함수를 반복사용하여 s의 첫번째 원소의 포인터값을 %s로 출력한다. (따라서 널문자까지 배열에 저장된 값을 다 출력하기 때문에 Kate가 출력됨) / 그 뒤 s[2]에 저장된 값을 %c로 출력한다. (따라서 문자 t가 출력됨)2번① 코드② 결과③ 설명char 배열 a에 “Kate”값...2024.08.14· 11페이지