지식인에서는 이런식으로 추상화를 표현하였네요.
추상화란?
클래스를 구현함에 있어 모든 속성과 기능을 구현할 필요는 없다. 회사원 관리를 위한 사람 클래스에서는 성별이라는 속성이 반드시 필요하지만 남자목욕탕 회원 관리를 위한 사람 클래스에서는 굳이 성별이라는 속성을 표시할 필요가 없습니다. 어자피 모든 구성원이 남자 일테니까요.
이처럼 굳이 구현할 필요없는 부분을 과감히 생각하여 필요한 부분을 나타내는 것을 추상화라 한다.
라고 인터넷 지식인에서는 나왔군요
또다른 정의를 보면
객체를 모델링할 때 필요로 하는 만큼의 속성과 오퍼레이션을 추출해내는것
모델에 무엇을 포함하고, 무엇을 뺄 것인지 아는 것은 가장 중요한 기술이다.
이런식으로 정의를 내렸네요.
네 둘다 같은 뜻이네요 어찌 보면 위에서 서술식으로 표현한 방법이 더 쉽고 이해하기가 편했고 아래는 핵심적인 용어로 내려서 조금 어렵게 느껴지는군요
추상화를 어떻게 이해를 해야 할지...
이건 표현으로 예를 들기 모하지만 우리가 프로젝트를 시작하여 유스케이스를 통해서 프로그램 전체 흐름을 이해하고 해야 할것과 하지 말아야 할 오퍼레이션과 속성을 정하듯이 추상화는 이미 우리가 머리속에서 행동으로 옴길 방법을 알았음에도 불구하고 우리는 누군가가 정의를 내려보라 하면 쉽게 애기를 못하는 이야기 중에 하나 인것 같습니다.
여기서 잠깐
오퍼레이션 ?
아 다 알고 계셨는데 너무 쉽게 보았다구요 죄송합니다. 전 또 모르는 분들도 볼까봐 설명을 할려고 합니다. 잘 아시는분들은 위에만 읽어보시고 나가셔도 괜찮습니다.
오퍼레이션은 기능을 뜻하는것 같습니다. 언어에서는 오퍼레이션을 아래와 같이 표현들을 해서 사용하지요
int add(int number_1, int number_2)
{
return number_1 + number_2;
}
이런식으로 표현해 놓으면 메인이나 기타 클래스에서 불러서 사용을 할수 있게 만들어 놓은 행위를 말하는것 같습니다. 우리는 이런것을 넓게 봐서는 함수라 하고 더 광범위하게 생각하면 메소드라고 표현을 하기도 하지요. 이런식에 함수를 만들어서 사용하는것은 매우 고민해야 하고 생각을 많이 해서 만들어야 합니다. 헤드퍼스트라는 책을 읽어 보면 세월이 절대 변하는 않는것은 "변화"라는 문구가 있습니다. 굉장히 중요 합니다. 함수로 표현을 하는것은 자주 변화하고 자주 불러다 쓸수 있는 것을 선별해서 만들어야 하는데 이것은 굉장히 어려운 고충이죠. 여러분은 이런부분을 생각해서 코딩을 하시나요? 아니며 그냥 복사, 붙여넣기 아니면 남들이 그렇게 했으니 나도 그렇게 해야지 하고 만드시나요? 한번 돌이켜 생각해 보면서 코딩을 해보면 좀더 이해가 쉽지 않을까 합니다.
두번째는 속성인데요. 속성은 구지 설명을 하기 좀 그런데 우리가 클래스 같은곳에서 맴버 변수를 선언하거나 테이블을 설계할때 필드를 잡는것 등등 이런것은 모두 속성이라고 전 생각하고 쉽니다.
예를들어 아래를 보시죠.
class addr
{
string name;
string phone;
string address;
}
모 이런식으로 표현을 해 두었다고 칩시다. 이런석은 주소에 해당되는 속성들이 클래스로 잡혀 있는 것입니다. 이것을 또 테이블 즉 DB로 관리를 한다면 마찬가지로 이것도 속성이 되는것이죠 제가 아직 배운게 없어서 이런식으로 밖에 설명을 해 드리지 못하겠군요 좀더 공부를 해야겠죠 저도... 제가 잘못 알고 있을수도 있으니 말입니다.
끝으로 추상화는 정말 우리가 정의를 내리지 못해도 우린 이미 하고 있다는 사실을 항상 생각해 주시고 이번기회에 다시 잡고 넘어가세요. 인터넷이나 도서관에 책자를 보면 보다 정확하고 근본적인 답들이 많이 있습니다.
이상 추상화에 대한 설명을 맞치도록 하겠습니다. 궁금한점 있으면 댓글이나 보충설명도 댓글로, 질책도 댓글로 달아주시면 감사하겠습니다.