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
복사