Search

객체지향 프로그래밍 연습하기

Class 설계 할때 주의 할점
1.
변수는 private으로 지정한다.
2.
get,set 함수를 만들어 변수에 접근한다.
3.
클래스를 설계 할때 어떤식으로 설계할지는 자유이나 최대한 문제를 꼼꼼히 읽고 어떤방식이 더 이해하기 쉬운가? 또는 평범한가를 고민하여 작성한다.

1. Person 클래스

문제: 이름(name), 나이(age), 성별(gender), 국적(nationality)을 멤버 변수로 가지는 클래스를 정의하고 Introduce() 멤버함수(메서드)를 구현하세요.
참고 예시 코드
#define _CRT_SECURE_NO_WARNINGS #include <iostream> class Person { public: Person() : mName("") //, mAge(0) { } void SetName(const char* name) { size_t length = strlen(name); strncpy(mName, name, length); mName[length] = '\0'; // Null-terminate the string } char* GetName() { return mName; } void Introduce() { std::cout << "My name is " << mName << std::endl; } private: char mName[256]; }; int main() { Person person; person.SetName("Alice"); person.Introduce(); char* name = person.GetName(); return 0; }
C++
복사
My name is Alice, 25 years old, Female, from Canada.
C++
복사

2. Book 클래스

문제: 제목(title), 저자(author), 출판사(publisher), 가격(price) 정보를 가진 클래스를 정의하고 정보를 출력하는 메서드를 작성하세요.
출력 예시
[Book] Title: "1984" Author: "George Orwell" Publisher: "Penguin" Price: $15.99
Plain Text
복사

3. Rectangle 클래스

문제: 가로(width), 세로(height), 테두리 두께(borderThickness), 색상(color)을 가진 사각형 클래스를 만들고 넓이와 둘레를 계산하여 출력하세요.
출력 예시
Color: Blue, Border: 2px Area: 200, Perimeter: 60
Plain Text
복사

4. Circle 클래스

문제: 반지름(radius), 색상(color), 채우기 여부(filled), 투명도(opacity)를 가지며 원의 면적과 둘레를 계산하세요. 원의 넓이, 원의 둘레를 계산하는 함수를 만들고 출력해보세요.
출력 예시
Circle Radius: 5 Color: Red Filled: Yes Opacity: 0.75 Area: 78.54 Circumference: 31.42
Plain Text
복사

5. Student 클래스

문제: 이름(name), 학번(id), 수학(math), 영어(english), 과학(science) 점수를 저장하고 평균 점수를 계산하세요.
출력 예시
Name: John (ID: 20231234) Math: 85, English: 78, Science: 92 Average Score: 85.0 Name: Minho (ID: 20231235) Math: 85, English: 88, Science: 92 Average Score: xx.x~ Name: Gahong (ID: 20231236) Math: 95, English: 78, Science: 92 Average Score: xx.x~
Plain Text
복사

6. Point 클래스

문제: x, y, z 좌표와 태그(tag)를 저장하는 Point 클래스를 만들고 좌표를 출력하는 메서드를 작성하세요.
출력 예시
Point Tag: A | Coordinates: (3, 4, 7)
Plain Text
복사

7. Timer 클래스

문제: 전체 시간(totalSeconds), 시작 여부(started), 경과 시간(elapsed), 이름(name)을 가지는 타이머를 만들고 경과 시간을 출력하세요.
출력 예시
Timer "Cooking" started. Elapsed: 90s / Total: 300s
Plain Text
복사

8. Product 클래스

문제: 이름(name), 단가(price), 수량(quantity), 할인율(discountRate)을 저장하고 최종 결제 금액을 계산하세요.
출력 예시
Product: Pen | Price: $2.0 | Quantity: 10 | Discount: 10% Total after discount: $18
Plain Text
복사

9. Employee 클래스

문제: 이름(name), 부서(department), 기본급(baseSalary), 근속연수(years), 보너스율(bonusRate)을 저장하고 총 급여를 계산하세요.
출력 예시
Employee: Jane | Department: HR | Years: 5 Base: 3000, Bonus: 15% Total Salary: 3450
Plain Text
복사

10. Movie 클래스

문제: 제목(title), 상영 시간(duration), 장르(genre), 연령제한(ageRating), 감독(director) 정보를 출력하세요.
출력 예시
[Movie] Title: Interstellar Duration: 169 min Genre: Sci-Fi Rated: 12+ Directed by: Nolan
Plain Text
복사

객체 간 상호작용 문제 (11~20: 3~4개 멤버 + 관계성)

11. BankAccount & Customer 클래스

문제: Customer는 이름, 연락처(phone), 주소(address), 나이(age)를 가지고, 하나의 BankAccount(잔액, 계좌번호, 은행명, 타입)를 포함합니다. 입출금 및 정보 출력 기능을 구현하세요.
출력 예시
Customer: Alice | Phone: 010-1234-5678 | Age: 27 Account: 123-456 | Bank: Hana | Type: Saving Balance: $1500 → Deposit $200 → Balance: $1700
Plain Text
복사

12. ScoreBoard & Player 클래스

문제: Player는 이름(name), ID, 팀(team), 점수(score)를 갖고, ScoreBoard는 전체 플레이어의 기록과 평균을 출력합니다.
출력 예시
[ScoreBoard] - Player: John (Team A) Score: 80 - Player: Mary (Team B) Score: 90 Average: 85
Plain Text
복사

13. Book & Library 클래스

문제: Book은 제목, 저자, 장르, 페이지 수를 가지며, Library는 도서 목록과 위치(location), 사서 이름(manager)을 관리합니다.
출력 예시
Library: Central Library | Manager: Ms. Kim Books: - "1984" by Orwell (Dystopia, 320p) - "Dune" by Herbert (Sci-Fi, 500p)
Plain Text
복사

14. Author & Article 클래스

문제: Author는 이름, 이메일, 전문 분야를 가지며, Article은 제목, 작성일자, 글자 수, 작성자(Author) 정보를 포함합니다.
출력 예시
Article: "Rise of AI" (1240 chars) Author: Alice Kim | Email: alice@domain.com | Field: Computer Science
Plain Text
복사

15. Teacher & Student 클래스

문제: Teacher는 이름, 과목(subject), 경력(years), 학생 목록을 관리하고, Student는 이름, 점수, 학년, 반 정보를 포함합니다.
출력 예시
Teacher: Mr. Lee (Math, 10 years) Students: - Tom (Grade 2, Class A): 85 - Jane (Grade 2, Class A): 90 - Sam (Grade 2, Class A): 75
Plain Text
복사

16. Item & Inventory 클래스

문제: Item은 이름, 설명, 무게, 개수를 가지고, Inventory는 아이템 목록과 소지자 이름(owner)을 관리합니다.
출력 예시
Inventory of: Player1 Item: Potion - Heals 50HP (x5) | Weight: 0.5 Item: Bomb - Deals 100 Damage (x2) | Weight: 1.0
Plain Text
복사

17. Engine & Car 클래스

문제: Engine은 마력, 연료 종류, 엔진 종류를 저장하고, Car는 브랜드, 모델, 연식과 엔진 정보를 출력합니다.
출력 예시
Car: Ford Mustang (2022) Engine: 450HP | Fuel: Gasoline | Type: V8
Plain Text
복사

18. Movie & Theater 클래스

문제: Movie는 제목, 상영 시간, 장르, 등급을 가지고, Theater는 이름, 위치, 상영 목록을 포함하며 총 상영 시간도 출력합니다.
출력 예시
Theater: CGV Gangnam | Location: Seoul Now Showing: - "Avatar" (162 min, 12+) - "Titanic" (195 min, All) Total: 357 minutes
Plain Text
복사

19. Order & Product 클래스

문제: Product는 이름, 단가, 수량, 할인율을 갖고, Order는 주문자 이름, 주문일자, 상품 목록을 관리합니다.
출력 예시
Order by: Alice | Date: 2024-05-18 Items: - Keyboard: $50 x 1 (Discount 0%) → $50 - Mouse: $20 x 2 (Discount 10%) → $36 Total: $86
Plain Text
복사

20. Course & Student 클래스

문제: Course는 강좌명, 담당 교수, 수강 정원, 수강생 목록을 가지며, Student는 이름, 학번, 학년, 학과 정보를 저장합니다.
출력 예시
Course: Programming 101 | Instructor: Dr. Kim | Capacity: 30 Students: - Alice (CS, 2nd year) - Bob (EE, 1st year) - Charlie (CS, 3rd year)
Plain Text
복사