newind2000
2015. 6. 2. 13:51
================================ Outline ====================================
전날 복습
객체 지향 프로그래밍과 클래스
코딩을 통한 클래스의 이해
학점 관리 프로그램 코딩 - 객체지향적
----------------------------------------------------------------------------
** 전날 복습
- 메소드의 정의
- 매게 변수의 정의
- Swap 메소드를 사용할 때 ‘ref’를 사용하여 참조 값을 전달한다.
- 다수의 반환 값이 발생하는 경우 'out'을 사용하여 처리 한다.
- 메소드 오버로딩의 정의: 함수의 이름은 동일하나 매개 변수의 숫자나 타입이 다른 경우 이를 다형성을 사용하여 이를 지원하는 기능
- 가변길이의 매개 변수는 'params'라는 코드를 사용하여 호출
- 명명된 매개변수는 인자의 이름을 직접 기입후 값을 넣어주는 것
- 선택적 매개변수는 인자의 기본 값을 초기화를 통해 선언해 준 후 값이 다른 경우만 매개 변수를 직접 넣어주는 것
<객체 지향 프로그래밍과 클래스>
객체란 무엇일까?
- 각 각의 기능을 가진 조각들을 객체라고 할 수 있다. 프로그래밍적으로 객체란 프로그램에 사용되는 모든 코드를 지칭한다.
- 코드를 사용할 때 일반적인 특성을 추출하여 보편적으로 적용되는 형식으로 만드는 것을 ‘객체화’라고 할 수 있다.
- 추상화를 통해 실제 객체의 주요 특징만 뽑아 일반화 시키는 능력이 필요하다.
- 레고 블록을 예로 들어 블록을 집을 만든다고 할 때 이것을 세부화하여 간단히 네모, 세모, 동그라미로 나눈 후 이것들을 조합하여 집을 짓는 것이다. 이처럼 전체 작업을 세부화하여 정형화하고 차후에 정형화된 조각들을 끌어 모아 재사용하는 것이 객체 지향이 추구하는 방법이다.
- 붕어빵을 예로 들면 붕어빵들은 클래쓰, 붕어빵은 객체
- 객체는 instance라고 부르며, 이는 실체라는 뜻이다. 객체가 실현되어 메모리 상에 올라와 있는 것이 객체가 실현된 상태이다.
- 모든 클래스는 복합 데이터 형식이다. 즉, 기본 데이터 형식을 조합해서 만드는 사용자 정의 데이터 형식.
<코딩을 통한 클래스의 이해>
자동차를 만든다고 가정하고 클래스를 활용한 코딩을 해보자.
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks;
namespace _20150602_class_concept { class Program { static void Main(string[] args) { car sonata = new car(); // 'car()'를 객체를 생성해주는 역할을 하는 '생성자라고 부른다. sonata.color = "red"; // C에서의 함수는 실체의 이름없이 그냥 함수의 이름만 넣어주면 가능했지만 // 메소드는 인스턴스의 값을 넣어주어야 한다. sonata.wheel = "4"; sonata.model = "2015 Limited"; sonata.drive(k: "100km");
car tico = new car(); tico.color = "white"; tico.wheel = "2"; tico.model = "rectangle sugar"; tico.drive(k: "50km"); tico.brake();
QM3 n1 = new QM3(); //car를 상속받은 'QM3' 상속자는 메소드를 재정의 할 수 있는데 //이것을 overriding이라고 한다. } }
class car //자동차를 만드는 객체 { // public을 사용하여 외부 접근 허용 public string color; public string wheel; public string model; public void drive(string k) { this.wheel = k; //만들어질 객체를 지칭할 때 'this'를 사용 } public void brake() { }
}
class QM3:car //class car로부터 상속 받겠다는 표시 { ; } }
** 과정 끝 무렵에 mySQL을 활용한 데이터 베이스에 사용에 대해 배워보도록 하겠다. |
- 생성자와 소멸자
프로그래머가 명시적으로 생성자를 만들어주지 않을 때 컴파일러가 기본 생성자(default constructor)를 만들어준다. 생성자는 다형성을 지원하기 때문에 매게 변수의 숫자와 타입에 따라 사용자가 생성자를 만들어 사용할 수 있다.
<객체지향적 코딩 - 학점 관리 프로그램>
class STUDENT //데이터 저장소의 역할 { //이름 국어 영어 수학 필드 string Name; int sKor; int sEng; int sMath; int sum; float average; char grade;
/*** 생성자 ***/ public STUDENT(/* input */ string sName, int Kor, int Eng, int Math, /* output */ out string Name, out int sKor, out int sEng, out int sMath) { Name = sName; sKor = Kor; sEng = Eng; sMath = Math; } //총점 메소드
public void Sum(out int sum) { sum = sKor+sEng+sMath; } //평균 메소드 public void Average(int sum, out float average) { average = sum / 3; } //학점 메소드 public void Grade(float average, out char grade) { if (average >= 90) { grade = 'A'; } else if (average >= 80) { grade = 'B';
} else if (average >= 70) { grade = 'C';
} else { grade = 'F'; } }
} |