본문으로 바로가기

[ASP.NET] 6. 객체 지향 프로그래밍

category Program/ASP.NET 2017. 2. 28. 12:57

객체 지향 프로그래밍


.NET은 완벽한 객체 지향(OOP)이다. 이를 배경으로 하는 ASP.NET은 아무리 하찮은 직업에도 모두 객체를 이용한다. 이 절에서는 ASP.NET 프로그램의 이해와 작성에 필요한 객체 지향 프로그래밍의 핵심적인 요소에 대해 살펴보자.


클래스

객체 지향 프로그래밍(Object-Oriented Programming, OOP)의 핵심인 클래스(Class)는 참조형에 해당하는 사용자 정의 데이터형(user-defined data type)이다. 이는 값형의 사용자 정의 데이터형인 구조체와 같이 새로운 데이터형을 만드는데 사용된다.


클래스를 정의하는 기본 구조는 다음과 같다.


class ClassName{

//클래스멤버

}


class MyClass{

MyClass firstClass;

firstClass = new MyClass();

}


클래스 정의로 만들어진 변수를 특별히 ' 객체' 또는 '인스턴스'라고 부른다. 클래스를 이용하여 변수를 선언하는 것을 '객체 변수 선언'이라고 하며, new 키워드로 힙 메모리 영역에 메모리를 할당하는 경우에는 '객체의 생성' 또는 '인스턴스의 생성'이라고 한다.


추상 클래스와 인터페이스

객체 지향 프로그래밍에서 추상화란 '클래스를 모델링하는 것'을 말한다. 추상 클래스(abstract class)와 인터페이스(interface)는 모두 모델링을 위한 존재한다. 자체적으로 객체를 생성할 수 없기 때문에 상속 또는 구현만이 가능하다.  

인터페이스는 속성과 빈 메서드만으로 구성된다. 인터페이스는 '상속'이라는 말대신 '구현(Implementation)'이라는 표현을 사용하는데, 인터페이스를 구현하는 클래스는 인터페이스에 정의된 메서드를 반드시 구현해야 한다. 따라서 어떤 인터페이스를 구현햇는지를 알면, 클래스 멤버에 어떤 필드가 있는지, 어떤 메서드가 구현되어 있는지를 알 수 있다. 이러한 이유에서 인터페이스를 '클래스 설계의 지침'이라고 한다. 


여러 클래스에서 상속받는 다중 상속이 금지되어 있다. 따라서 어떤 클래스든지 하나의 클래스만을 상속받을 수 있다. 그러나 여러 개의 인터페이스를 구현할 수 는 있다.


생성자와 소멸자

메서드 중에는 반환형이 없고, 메서드명이 클래스 이름과 같은 메서드가 있다. 이를 '생성자(constructor)'라고 한다. 이는 new 키워드에 의해 객체가 생성될 때 처리되는 메서드이다. 클래스 멤버의 초기화가 필요할 경우에 정의한다.


생성자처럼 반환형도 없고, 메서드명이 클래스 이름과 같으며, 메서드명 앞에 '~(tilde)'가 붙은 메서드를 '소멸자(destructor)'라고 한다. 소멸자는 객체가 힙 메모리 공간에서 사라질 때 처리되는 메서드이다.


생성자를 정의하지 않으면 객체가 생성될 때 필드를 초기화하는 디폴트 생성자를 자동으로 만든다.


class BestCustomer : Customer{

BestCustomer() { } // 생성자 : 클래스 멤버의 초기화가 필요한경우 정의

~BestCustomer() { } // 소멸자 : 클래스에서 사용한 자원을 돌려주어야 할 경우 사용

void DrawCheck(){ }

}


접근 한정자

다른 객체에서 이런저런 간섭을 하지 못하도록 접근을 원천적으로 제한한다. 이를 '캡슐화'라고 한다. 캡슐화로 인해 외부에서 문제를 일으킬 가능성이 적기 때문에 문제가 생기면 담당 객체의 책임이다. 프로그램에 오류가 발생하면 담당 클래스를 찾아 디버깅하면 된다.


접근한정자 

의미 

internal 

참조 목록에 있는 클래스를 포함하여 현재 웹 사이트 또는 현재 프로젝트 클래스에서 접근 가능 

private

같은 클래스에서만 접근 가능 

protected 

같은 클래스와 파생 클래스에서만 접근 가능 

protected internal 

internal 접근 또는 protected 접근 허용 

public 

어떤 클래스에서도 접근 가능 


접근 한정자는 class 키워드 앞, 메서드의 반환형 앞, 필드의 데이터형 앞 등에 위치시켜 외부로부터의 접근을 제한한다.


키워드 this

this 키워드는 클래스 내에서 클래스 멤버를 직접 참조할 때 사용하는 자기 자신의 참조 변수다. 자기 자신에 대한 참조 변수이므로 클래스를 벗어나면 사용할 수 없다. 다음 this 키워드 사용 예를 살펴보자.


public class Customer{

public string name;

public void SetName(string name){

this.name = name; }

}


위에서 매개변수명 name과 Customer 필드명 name이 서로 같다. Customer 클래스 자신의 필드 name 임을 명시할 때는 this 키워드를 사용한다.

'Program > ASP.NET' 카테고리의 다른 글

[ASP.NET] 8.웹 폼의 동작 원리  (0) 2017.03.02
[ASP.NET] 7.네임스페이스  (0) 2017.03.02
[ASP.NET] 5. 웹 페이지 코드 쓰기  (0) 2017.02.23
[ASP.NET] 4. HTML의 이해  (0) 2017.02.23
[ASP.NET] 3. 주요 웹 개발 언어 비교  (0) 2017.02.23