일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
Tags
- 클래스 다이어그램
- C++
- 산책하기 좋은 곳
- 네트워크 프로그래밍
- 언제나휴일
- 원격 제어 프로그램
- 언제나 휴일
- 안드로이드 앱 개발
- 표준 입출력
- 유튜브 동영상 강의
- 무료 동영상 강의
- 알고리즘
- c#
- 실습
- 동영상
- 강의
- 캡슐화
- 소스 코드
- 소켓 통신
- 졸업 작품
- 동영상 강의
- 표준 라이브러리 함수
- 졸업 작품 소재
- 실습으로 다지는 c#
- 프로젝트
- 충남 천안
- c언어
- Windows Forms
- 파이썬
- 추천
Archives
- Today
- Total
프로그래밍 언어 및 기술 [언제나휴일]
[실습으로 다지는 C#] 캡슐화 실습 – 학생 클래스 정의하기 본문
이번 강의에서는 캡슐화 실습을 해 봅시다.
캡슐화는 여러 개의 멤버를 하나의 형식으로 묶는 과정을 말합니다. 이번 실습에서는 학생 클래스를 정의하는 실습을 해 보기로 할게요.
실습할 학생 클래스의 멤버는 다음과 같아요.
학생 클래스
멤버 필드
아이큐
매력
번호 - 읽기 전용, 순차 부여
이름
가장 최근에 부여한 번호 - 정적 멤버
멤버 메서드
생성자(이름)
공부하다(횟수)
춤추다(횟수)
노래하다(횟수)
ToString 재정의
멤버 속성
get은 public, set private
OOP 프로그래밍에서는 구현할 프로그램을 UML 다이어그램을 이용하여 요구 분석 및 아키텍쳐링, 설계를 한 후에 구체적으로 구현하고 테스트를 하곤 하죠. 특히 형식을 정의할 때 이를 클래스 다이어그램으로 표시하고 형식과 형식 사이의 관계를 도식하곤 합니다.
여기서 실습할 학생 클래스를 클래스 다이어그램으로 표현하면 다음처럼 표현할 수 있어요.
사각형을 삼등분하였을 때 첫 번째 칸은 클래스 이름, 두 번째 칸은 멤버 필드, 세 번째 칸은 멤버 메서드입니다.
그리고 멤버 앞에 + 표시는 public 접근 지정을 의미하고 -는 private 접근 지정을 의미합니다. 참고로 protected 접근 지정은 #으로 표시합니다.
lastnum과 get_LastNum처럼 밑줄 친 멤버는 정적 멤버를 의미합니다.
특수한 의미를 나타내기 위해 <<스테레오 타입>> 을 사용할 수도 있습니다.
이제 시나리오에 맞게 코드를 작성해 보세요. 메서드 내에서 구체적으로 수행할 작업은 여러분들이 추가적으로 시나리오를 작성하여 구현해 보세요. 그리고 난 후에 비교해 보시기 바랍니다.
using System;
namespace 캡슐화_실습___학생_클래스_정의하기
{
class Student//학생 클래스
{
#region 멤버 필드
int iq;// 아이큐
int cp;// 매력
readonly int num;// 번호
string name;// 이름
static int lastnum;// 가장 최근에 부여한 번호
#endregion
#region //멤버 메서드
public Student(string name)// 생성자
{
this.name = name;
lastnum++;
num = lastnum;
}
// 공부하다
public void Study(int tcnt)
{
Console.WriteLine("{0}번 {1}학생 {2}횟수 공부하다.", num, name, tcnt);
iq += tcnt;
}
// 춤추다
public void Dance(int tcnt)
{
Console.WriteLine("{0}번 {1}학생 {2}횟수 춤추다.", num, name, tcnt);
cp += tcnt;
}
// 노래하다
public void Sing(int tcnt)
{
Console.WriteLine("{0}번 {1}학생 {2}횟수 노래하다.", num, name, tcnt);
iq += tcnt / 2;
cp += tcnt / 2;
}
// ToString 재정의
public override string ToString()
{
return string.Format("번호:{0} 이름:{1}", num, name);
}
#endregion
#region//멤버 속성
// get은 public, set private
public int IQ
{
get
{
return iq;
}
private set
{
iq = value;
}
}
public int CP
{
get
{
return cp;
}
private set
{
cp = value;
}
}
public int Num
{
get
{
return num;
}
}
public string Name
{
get
{
return name;
}
private set
{
name = value;
}
}
public static int LastNum
{
get
{
return lastnum;
}
}
#endregion
}
}
//http://ehpub.co.kr
//실습으로 다지는 C#
//9. 캡슐화 실습 - 학생 클래스 정의하기
using System;
namespace 캡슐화_실습___학생_클래스_정의하기
{
class Program
{
static void Main(string[] args)
{
Student stu1 = new Student("홍길동");
Student stu2 = new Student("강감찬");
Console.WriteLine(stu1);
Console.WriteLine(stu2);
stu1.Study(3);
Console.WriteLine("번호:{0} 이름:{1} 아이큐:{2} 매력:{3}", stu1.Num, stu1.Name, stu1.IQ, stu1.CP);
stu1.Dance(4);
Console.WriteLine("번호:{0} 이름:{1} 아이큐:{2} 매력:{3}", stu1.Num, stu1.Name, stu1.IQ, stu1.CP);
stu1.Sing(6);
Console.WriteLine("번호:{0} 이름:{1} 아이큐:{2} 매력:{3}", stu1.Num, stu1.Name, stu1.IQ, stu1.CP);
Console.WriteLine("가장 최근에 부여한 학생 번호:{0}", Student.LastNum);
}
}
}
실행 결과는 다음과 같습니다.
번호:1 이름:홍길동
번호:2 이름:강감찬
1번 홍길동학생 3횟수 공부하다.
번호:1 이름:홍길동 아이큐:3 매력:0
1번 홍길동학생 4횟수 춤추다.
번호:1 이름:홍길동 아이큐:3 매력:4
1번 홍길동학생 6횟수 노래하다.
번호:1 이름:홍길동 아이큐:6 매력:7
가장 최근에 부여한 학생 번호:2
언제나휴일 여행 및 산책
'C# > 실습으로 다지는 C#' 카테고리의 다른 글
[실습으로 다지는 C#] 구성(Composition) 관계 실습 – 사람, 눈 (0) | 2025.01.05 |
---|---|
[실습으로 다지는 C#] 집합(Aggregation) 관계 실습 – 쇼핑 센터, 상품 (0) | 2025.01.05 |
[실습으로 다지는 C#] 일반화 관계(Generalization) 실습 – 포유류, 호랑이, 사자 (0) | 2025.01.05 |
[실습으로 다지는 C#] 클래스 간의 관계 (0) | 2025.01.05 |
[실습으로 다지는 C#] 랜덤 값 맞추기 (0) | 2025.01.05 |
[실습으로 다지는 C#] 암스트롱의 수 (0) | 2025.01.05 |
[실습으로 다지는 C#] 두 개의 정수 사이의 합계 구하기 (0) | 2025.01.05 |
[실습으로 다지는 C#] 두 개의 정수를 입력받아 작은 수가 큰 수의 약수인지 판별 (0) | 2025.01.05 |