반응형

언어 자료구조 알고리즘/프로그래밍 실습 133

[C# 소스] 클래스 간의 관계 - 4. 연관(Association) 관계

[C# 소스] 클래스 간의 관계 - 4. 연관(Association) 관계 연관 관계는 명령 개체와 피 명령 개체가 명확하지 않은 관계입니다. 프로그램에서는 연관 관계로 표현하지 말고 직접 연관 관계로 표현하는 것이 안전합니다. 연관 관계는 약사와 의사처럼 “약사와 의사는 환자 치료에 연관이 있다.”와 같이 수평적인 관계입니다. 의사는 환자 치료를 위해 어떠한 약을 처방받아 먹고 있는지 알 수 있어야 합니다. 또한 약사는 약을 조재하기 위해서는 의사의 처방이 필요합니다. 그런데 이와 같은 관계에서 프로그램을 잘못 작성하여 버그가 날 위험이 많습니다. 예를 들어 의사의 “치료하다” 기능에서 약사의 “조재하다”를 호출하게 구현하고 약사의 “조재하다” 기능에서 의사의 “치료하다”를 호출한다면 스택 오버 플로우..

[C# 소스] 클래스 간의 관계 - 3. 직접 연관(DIrected Association) 관계

[C# 소스] 클래스 간의 관계 - 3. 직접 연관(DIrected Association) 관계 직접 연관 관계는 프로그램에서 가장 흔하게 볼 수 있는 관계로 명령을 내리는 개체와 명령을 받아 수행하는 개체의 관계입니다. “고용자는 피 고용자에게 일을 시킬 수 있다.” 처럼 프로그램 세계에서는 매우 자연스러운 관계입니다. 목적 집단에서 목적을 달성하기 위해 상하 관계가 존재하는 것처럼 프로그램도 특정 목적을 수행하기 위한 코드 집합이어서 직접 연관 관계가 필요합니다. using System; namespace 직접연관관계 { class Employee { int capa; string name; public Employee(int capa, string name) { this.capa = capa; th..

[C# 소스] 클래스 간의 관계 - 2. 집합(Aggregation) 관계

[C# 소스] 클래스 간의 관계 - 2. 집합(Aggregation) 관계 필통과 펜의 관계처럼 "필통은 펜을 보관할 수 있다."라는 논리적 관계를 집합이라 합니다. 집합 관계에서는 소유 개체와 피 소유 개체의 생성 시기와 소멸 시기가 같지 않아도 됩니다. using System; using System.Collections; namespace 집합_관계 { class Pen { string maker; string name; public Pen(string maker, string name) { this.maker = maker; this.name = name; } public override string ToString() { return string.Format("상품명:{0} 제조사:{1}", n..

[C# 소스] 클래스 간의 관계 - 1. 일반화(Generalization)관계

[C# 소스] 클래스 간의 관계 - 1. 일반화(Generalization)관계 음악가와 피아니스트와 같이 "피아니스트는 음악가이다."라는 논리적 관계를 형성하는 관계를 일반화 혹은 파생 관계(Derivation)라 합니다. 이와 같은 일반화 관계에 있을 때 기반이 되는 클래스에 정의되어 있는 멤버를 파생 클래스에서는 상속을 받게 되며 OOP의 중요한 특징 중의 하나라고 할 수 있습니다. using System; namespace 일반화_관계 { class Musician { public void Play() { Console.WriteLine("음악가 연주하다."); } } class Pianist:Musician { public void Tuning() { Console.WriteLine("조율하다...

[C# 캡슐화 실습] 캠퍼스 생활 - 학생 클래스 정의하기

[C# 캡슐화 실습] 캠퍼스 생활 - 학생 클래스 정의하기 캠퍼스 생활은 콘솔 기반의 응용 프로그램이다. 프로그램은 초기화 과정을 진행한 후에 사용자 명령에 따른 동작 수행을 반복한다. 초기화에서는 사용자가 원하는 수만큼 학생들이 생성된다. 학생은 사용자에 의해 이름을 결정하고 학번은 차례대로 부여한다. 사용자 명령에 따른 동작은 종료 메뉴를 선택하기 전까지 선택한 메뉴를 수행하는 것을 반복한다. 메뉴에는 판서 강의, 발표, 세미나, 책 읽기, TV시청, 잠 자기, 전체 보기가 있다. 판서 강의를 선택하면 전체 학생은 판서 강의 듣기를 수행한다. 세미나를 선택하면 특정 학생을 선택하여 선택한 학생은 세미나를 발표하고 나머지 학생은 세미나를 듣는다. 책 읽기에서는 특정 학생을 선택하여 선택한 학생만 책을 ..

[C# 실습] 도서 관리 프로그램 - 인덱서 정의

[C# 실습] 도서 관리 프로그램 - 인덱서 정의실습 주제: 도서 관리 프로그램실습 내용: 도서 정보를 관리하는 콘솔 프로그램이다. 도서 정보는 별도의 형식을 정의하며 해당 형식에는 인덱서를 통해 도서 개체에 접근하고 설정할 수 있다.제공하는 메뉴는 도서 추가, 도서 삭제, 도서 조회, 전체 보기가 있다. 실습 근거: 국가직무능력표준(NCS)의 응용소프트웨어 엔지니어의 "프로그래밍 언어 활용(2001020215_15v3)" 직무능력에서 "기본문법 활용하기" 능력단위 요소를 익힌 것을 실습으로 구현해 보는 실습 국가직무능력표준에서 해당 능력단위 요소에서 수행 준거(훈련 내용)은 다음과 같습니다.1. 응용소프트웨어 개발에 필요한 프로그래밍 언어의 데이터 타입을 적용하여 변수를 사용할 수 있다.2. 프로그래밍..

[C# 배열 실습] 성적 관리 프로그램

[C# 배열 실습] 성적 관리 프로그램 실습 주제: 성적 관리 프로그램실습 내용: 관리할 학생 수를 입력 받은 후에 해당 수의 학생의 성적을 관리하는 콘솔 프로그램이다. 학생의 성적은 배열을 통해 관리한다. 제공하는 메뉴는 성적 추가, 성적 삭제, 성적 조회, 전체 성적 보기가 있다. 실습 근거: 국가직무능력표준(NCS)의 응용소프트웨어 엔지니어의 "프로그래밍 언어 활용(2001020215_15v3)" 직무능력에서 "기본문법 활용하기" 능력단위 요소를 익힌 것을 실습으로 구현해 보는 실습 국가직무능력표준에서 해당 능력단위 요소에서 수행 준거(훈련 내용)은 다음과 같습니다.1. 응용소프트웨어 개발에 필요한 프로그래밍 언어의 데이터 타입을 적용하여 변수를 사용할 수 있다.2. 프로그래밍 언어의 연산자와 명령..

[C# 제어문 실습] 다이아몬드 출력

[C# 제어문 실습] 다이아몬드 출력 //9. 입력한 정수의 높이에 맞게 다이아몬드를 출력 using System; namespace 반복문 { class Program { static void Main(string[] args) { int line = 0; line = int.Parse(Console.ReadLine()); int space = 0; int lcnt = 0; int star = 0; for (lcnt = 1; lcnt 0; space--) { Console.Write(" "); } for (star = 1; star =0; lcnt--) { for (space = line - lcnt; space > 0; space--) { Console.Write(" "); } for (star = ..

[C# 제어문 실습] 랜덤 수 맞히기(Low High)

[C# 제어문 실습] 랜덤 수 맞히기(Low High) //7. 컴퓨터는 1에서 100사이의 랜덤한 수를 갖습니다. 사용자는 10회 동안 컴퓨터가 갖고 있는 수를 맞추는 게임입니다. 매 회마다 사용자는 자신이 생각한 수를 입력하고 컴퓨터가 갖고 있는 수가 더 크면 "더 큽니다.", 작으면 "더 작습니다." 같으면 "축하합니다. 맞췄습니다."라고 메시지를 출력합니다. 그리고 틀렸을 때는 맞추거나 10회 동안 반복합니다. 만약 10회를 반복하였는데 못 맞추었을 때는 "실패하였습니다."라고 메시지를 출력합니다. using System; namespace 반복문{ class Program { static void Main(string[] args) { Random random = new Random(); int..

반응형