모바일 오유 바로가기
http://m.todayhumor.co.kr
분류 게시판
베스트
  • 베스트오브베스트
  • 베스트
  • 오늘의베스트
  • 유머
  • 유머자료
  • 유머글
  • 이야기
  • 자유
  • 고민
  • 연애
  • 결혼생활
  • 좋은글
  • 자랑
  • 공포
  • 멘붕
  • 사이다
  • 군대
  • 밀리터리
  • 미스터리
  • 술한잔
  • 오늘있잖아요
  • 투표인증
  • 새해
  • 이슈
  • 시사
  • 시사아카이브
  • 사회면
  • 사건사고
  • 생활
  • 패션
  • 패션착샷
  • 아동패션착샷
  • 뷰티
  • 인테리어
  • DIY
  • 요리
  • 커피&차
  • 육아
  • 법률
  • 동물
  • 지식
  • 취업정보
  • 식물
  • 다이어트
  • 의료
  • 영어
  • 맛집
  • 추천사이트
  • 해외직구
  • 취미
  • 사진
  • 사진강좌
  • 카메라
  • 만화
  • 애니메이션
  • 포니
  • 자전거
  • 자동차
  • 여행
  • 바이크
  • 민물낚시
  • 바다낚시
  • 장난감
  • 그림판
  • 학술
  • 경제
  • 역사
  • 예술
  • 과학
  • 철학
  • 심리학
  • 방송연예
  • 연예
  • 음악
  • 음악찾기
  • 악기
  • 음향기기
  • 영화
  • 다큐멘터리
  • 국내드라마
  • 해외드라마
  • 예능
  • 팟케스트
  • 방송프로그램
  • 무한도전
  • 더지니어스
  • 개그콘서트
  • 런닝맨
  • 나가수
  • 디지털
  • 컴퓨터
  • 프로그래머
  • IT
  • 안티바이러스
  • 애플
  • 안드로이드
  • 스마트폰
  • 윈도우폰
  • 심비안
  • 스포츠
  • 스포츠
  • 축구
  • 야구
  • 농구
  • 바둑
  • 야구팀
  • 삼성
  • 두산
  • NC
  • 넥센
  • 한화
  • SK
  • 기아
  • 롯데
  • LG
  • KT
  • 메이저리그
  • 일본프로야구리그
  • 게임1
  • 플래시게임
  • 게임토론방
  • 엑스박스
  • 플레이스테이션
  • 닌텐도
  • 모바일게임
  • 게임2
  • 던전앤파이터
  • 마비노기
  • 마비노기영웅전
  • 하스스톤
  • 히어로즈오브더스톰
  • gta5
  • 디아블로
  • 디아블로2
  • 피파온라인2
  • 피파온라인3
  • 워크래프트
  • 월드오브워크래프트
  • 밀리언아서
  • 월드오브탱크
  • 블레이드앤소울
  • 검은사막
  • 스타크래프트
  • 스타크래프트2
  • 베틀필드3
  • 마인크래프트
  • 데이즈
  • 문명
  • 서든어택
  • 테라
  • 아이온
  • 심시티5
  • 프리스타일풋볼
  • 스페셜포스
  • 사이퍼즈
  • 도타2
  • 메이플스토리1
  • 메이플스토리2
  • 오버워치
  • 오버워치그룹모집
  • 포켓몬고
  • 파이널판타지14
  • 배틀그라운드
  • 기타
  • 종교
  • 단어장
  • 자료창고
  • 운영
  • 공지사항
  • 오유운영
  • 게시판신청
  • 보류
  • 임시게시판
  • 메르스
  • 세월호
  • 원전사고
  • 2016리오올림픽
  • 2018평창올림픽
  • 코로나19
  • 2020도쿄올림픽
  • 게시판찾기
  • 오유인페이지
    개인차단 상태
    PrimaryC님의
    개인페이지입니다
    가입 : 15-05-18
    방문 : 16회
    닉네임변경 이력
    회원차단
    회원차단해제
    게시물ID : programmer_10369
    작성자 : PrimaryC
    추천 : 3
    조회수 : 672
    IP : 210.125.***.85
    댓글 : 4개
    등록시간 : 2015/05/23 06:53:48
    http://todayhumor.com/?programmer_10369 모바일
    객체지향의 개념에 대한 이야기입니다 -1-
    옵션
    • 창작글
    이 글을 쓰게 되는 이유는 제 생각을 정리하기 위함과 동시에 질문을 받아 답을 하면서 완성된 개념의 설명을 만들기 위해서입니다.
    객체지향으로부터 시작해서 자료구조, 데이터마이닝, 온톨로지, 나아가 빅데이터나 IOT 등의 개념에 대해서 정리하고 
    가능하다면 나무위키에 이를 정리해둘 계획도 있구요. 
    그에 따른 시작점이라고 이해해주시면 좋겠습니다.
    지적사항은 환영합니다. 저도 객관적이고 사실에 기반한 이야기로 정리하고 싶으니까요 ㅇㅅㅇ!


    1. 설명에 앞서.
    ~~지향 프로그래밍 방법이라는 것은 일반적으로 패러다임이라는 말로 구분됩니다. 패러다임이라는 것은 사람들이 시간이 지남에 따라서 새로운 형태의 생각을 바탕으로 세상을 이해하고 해석하는 것에서 출발하고 있기 때문에, 같은 현상에 대해서 다양한 패러다임에 의해 해석될 여지가 있습니다.
    절차지향, 객체지향, 최근에는 서비스 지향, 모델 기반 등등의 개발방법들이 제안되고 있습니다만, 어느것이 가장 우수하냐 라는 말은 위의 이유로 큰 의미를 갖지 못하게 되죠. 
    예를 들자면 이런 겁니다. 구구단을 짜는데, 고작 세줄에서 열줄정도 되는 코드를 짜기 위해서 연산자와 피연산자를 객체화 하는 것은 아무리 생각해도 비효율적입니다. 나아가 이를 서비스적으로, 모델 기반으로 해석, 개발하는 것은 언어도단 수준의 병신력을 뿜뿜할 뿐이죠. 
    하지만 현업에서 일하시는 분들이나, 현재 프로그래밍을 공부하시는 분들에게 있어서 객체지향 프로그래밍이라는 것은 마치 바이블의 한 구절마냥 회자되고 누구나 지켜야 할 계명으로 들리실지도 모르겠습니다. 이렇게 사람들이 객체지향의 장점을 주장하고 공감대를 형성하는 것은 그 나름의 이유가 있습니다.
    하지만 이 아래의 설명을 읽어주시면서 기억하셔야 할 것은, 누구나가 중요성을 말하고 당연하게 여기더라하더라도, 필요에 따라서는 얼마든지 절차지향이나 나아가 어쩔때는 어셈블리 수준의 단순한 프로그래밍이 더욱 효율적인 상황이 발생할 수도 있다는 사실입니다. 
    지금은 누구나가 겪는 당연한 문제와 그 해결법 들이 여러분이 실제 프로그래밍을 하는 과정에서는 발생하지 않거나, 오히려 반대 작용의 걸림돌이 되는 경우도 적지 않기 때문입니다.
    이론은 이론입니다. 어떻게 적용할 것인지는 여러분의 몫입니다. 다만 어떨때 이론을 적용하면 좋은지 위주로 설명을 이어가도록 노력해보겠습니다.

    2. 객체지향의 배경
    아이가 크면 어른이되고 성숙해지는 것은 당연한 이치입니다. 고작 반세기 남짓한 역사를 가진 소위 말하는 소프트웨어의 역사도 이제는 세상의 풍파를 겪으며 이제는 거의 어른이 되어가고 있다는 느낌입니다. 
    사람이 자라고 머리가 굵어지면, 세상을 살아가는 지혜라는 것이 생기기 마련입니다. 여기서 말하는 지혜라는 것은, 세상에서 발생하는 어떤 문제에 대해서 자신이 별로 힘을 들이지 않아도 쉽게 고난을 헤쳐나갈 수 있는 요령과도 같은 것이죠.
    사실 공학이라는 것의 본질은 바로 이것입니다. 공학을 한마디로 정의한다면, '어떤 기술을 이용하여 어떻게 "낮은 비용"으로 "높은 품질"의 결과물을 "효과적으로" 얻을수 있을까"를 연구하는 학문이라고 할 수 있겠죠. 소프트웨어 공학도 그런 이유로 만들어진 학문입니다. 
    소프트웨어 공학을 정규적으로 배우신 분이라면 소프트웨어 위기(software crisis) 라는 말을 들어보신 분이 있을지 모르겠는데요. 사실 그냥 이름만 그럴싸하게 붙였을 뿐 딱히 별 의미가 있는 말은 아닙니다. 말하자면 사람들이 소프트웨어는 많이 만들어달라고 하는데 만들 사람은 예나 지금이나 거기서 거기이기에 돈벌어먹기 힘들어 졌다! 라는 것이 소프트웨어 위기의 개념입니다. 
    말하자면 개발자들이 호프집에 가서 
    '야 일 많은 건 좋은데 집에 못가서 죽겠음' 
    '그건 니사정 ㅇㅇ'
    'ㅠㅠ 그래도 뭐 방법 없겠냐?'
    'ㅡㅡ그래 생각좀 해보자'
    그리하여 소프트웨어 공학은 세상에 태어났습니다.

    소프트웨어 공학의 목표는 결국 여기에 있습니다. 제한된 숫자의 인력이 어떻게 좋은 프로그램을 만들기 위해서는 어떻게 프로그래밍을 해야 할 것인가?
    이 안에는 개발자와 소비자간의 의사소통 방법, 개발자간에 협력하는 방식, 프로그램의 성능, 시스템의 개발 비용 등 다양한 방법으로 소프트웨어 개발의 효율을 높이기 위한 방법이 제안되어 있습니다. 

    객체지향 프로그래밍 이라는 방법은, 이 중에서도 개발자간의 협력 방식과 시스템 개발 비용을 획기적으로 개선할 수 있는 방법으로서 제안된 새로운 프로그래밍 패러다임이라고 말할 수 있겠습니다. 객체라고 하는 사람들이 쉽게 상상할 수 있는 개념을 바탕으로 쉽게 도식화 하여 의사소통을 할 수 있고, 각자의 책임을 명확하게 정의하여 작업을 분담하기도 편합니다. 나아가 기존에 만들었던 객체를 새로운 프로그램에 다시 사용하거나 기존에 프로그램의 문제를 빠르게 해결하기에도 기존에 비해 탁월한 특징을 지니고 있습니다.

    다만 기억해주셔야 합니다. 여러사람이 협업해서 프로그램을 짜야하는 상황이 아닌 정도의 규모, 이를테면 계산기라던가 하는 고작해야 1000여라인의 코드에는 딱히 객체지향을 써야 할 이유가 전혀 없습니다. 그냥 줄줄이 짜는게 더 편한 분들도 많아요. 
    객체지향 프로그램이 적절한 대상은 어디까지나, 수명~수십명의 인력이 동시에 개발을 진행해야 하고, 방향을 수정하고 공감대를 형성하기 위한 노력이 많이 필요한 경우입니다. 

    적합한 대상에 적합한 수단을 선택한다면 패러다임의 가치를 더욱 빛나게 할 수 있을 겁니다.


    다음번에는 객체의 개념에 대해서 다뤄볼게요.
    연재물로 만들 생각은 없었는데, 한번에 긴 글 쓰기가 쉽지 않네요.

    출처 살다보니

    이 게시물을 추천한 분들의 목록입니다.
    [1] 2015/05/23 12:49:51  223.62.***.67  REGENTAG  141650
    [2] 2015/05/24 12:44:54  222.251.***.160  얼굴낙법  369087
    [3] 2015/05/24 18:38:32  219.254.***.203  scrapbook  627255
    푸르딩딩:추천수 3이상 댓글은 배경색이 바뀝니다.
    (단,비공감수가 추천수의 1/3 초과시 해당없음)

    죄송합니다. 댓글 작성은 회원만 가능합니다.

    번호 제 목 이름 날짜 조회 추천
    6
    베스트 가보고 싶은데 PrimaryC 15/06/02 13:33 11 1
    5
    (어마어마하게 데이터 주의)개발자들의 인생을 짤로 표현한다. [4] PrimaryC 15/06/02 08:50 42 15
    4
    프로그래밍게시판을 보며 드는 생각 [33] PrimaryC 15/05/29 14:32 95 2
    3
    오유에 가입한 이유, 그리고 오유가 좋은 이유 [2] PrimaryC 15/05/28 03:39 50 1
    2
    오늘의 세포전쟁 [1] PrimaryC 15/05/23 20:33 62 0
    객체지향의 개념에 대한 이야기입니다 -1- [5] 창작글 PrimaryC 15/05/23 06:53 51 3
    [1]
    단축키 운영진에게 바란다(삭제요청/제안) 운영게 게시판신청 자료창고 보류 개인정보취급방침 청소년보호정책 모바일홈