본문 바로가기

카테고리 없음

오버라이딩(Overriding)

반응형

 

개발을 하면서 오버라이딩(Overriding)을 개발하면서 사용할 일이 있을까? 사용한다면 언제 사용을 할까? 라는 생각을 초년생때 생각을 많이 하게 되었다.

 

개발을 5년이상 하다보니 내가 함수를 만들어주고 다른 개발자들에게 사용하라고 배포해주다보니 오버라이딩을 자주 만들어서 주게 되었다.

 

오버라이딩 : 같은 이름을 가진 함수와 가변적인 파라미터값을 처리하는 방식이라 생각하면 된다.

 

 

 


예제1.

 

protected Database()
   : this(string.Empty, string.Empty)
  {
  }

 

 

protected Database(string connectionString)
   : this(connectionString, string.Empty)
  {
  }

 

 

protected Database(string connectionString, string parameterIntial)
  {
   this.parameterIntial = parameterIntial;

   this.connection = (this as IDatabase).CreateConnection();
   this.command = (this as IDatabase).CreateCommand();
   this.dataAdapter = (this as IDatabase).CreateDataAdapter();

   this.command.Connection = this.connection;

   if (!string.IsNullOrEmpty(connectionString))
    this.connection.ConnectionString = connectionString;
  }

 

 

Database() 함수 중에 동일한 함수명이 3개인 것이 있다.

 

A 개발자 : 저는 그냥 선배님이 만들어주신 함수쓸께요. 기본 DB접속 정보가 다 들어있는 함수만 만들어주세요.

 

B 개발자 : 선배님이 만들어주신거 사용하다가 문제점이 발생했어요 저는 다른 DB에도 접속을 해야되요. 변수에 제가 직접 DB정보를 넣게 파라미터 하나 만들어주세요.

 

C 개발자 : 저는 B선배보다 더 복잡해요 . 파라메터값 하나 더 추가 할 수 있어서

              공간하나만 더 만들어주세요.

 

 

배포할려고 하니 다양한 사람들의 요구가 빗발쳐 입맛에 맞게 만들어주었다.

 

다른 함수 명칭으로 만들어서 사용하고 싶었지만 기존에 Database라는 함수를

 

쓴다는 것을 인식 하였기 때문에 함수명을 동일하게 하여 파라미터 값만 추가할 수 있

 

는 방법을 구사하여 위 처럼 만들게 되었다. 오버라이딩을 보면서 개발자들의 요구

 

사항을 잘 이해한듯 하다.

 

 

 

 

 

반응형