객체지향프로그래밍 (3/3) : 부품화 > PHP

PHP

PHP Web Programming 강의 리스트

생활코딩 | 객체지향프로그래밍 (3/3) : 부품화

본문

※ 영상을 선명하게 보기 안내
  1. 유튜브 영상에서 오른쪽하단에 톱니바퀴를 클릭합니다.
  2. 팝업목록에서 "품질" 선택하세요.
  3. 원하는 해상도를 선택해주세요.
※ 모바일에서 Wifi가 아니라면 데이타가 소진될 수 있으니 주의바랍니다.
생활코딩님의 PHP강의 청각장애인을 위한 자막
15444116335879.jpg

 엇 액체 재앙 프로그래밍을 구성하고 있는 어떤 컨셉 뜰은 상당히 많이

있습니다
뭐 한가지로 딱 찝어 얘기 하기에는 저는 좀 곤란한 생각이 드는데 그
중에서 제가 지금 단계의
2 객체 지향 그 프로그래밍을
수업을 절차 지향 수업까지 를 쭉 들어 오신 분들에게 제가 설명드릴 수
있는 것이면서 또 제가 생각하는 객체지향 프로그래밍에서 가장 중요한
특성이라고 할 수 있는 것들을
2 프로그래밍 바깥쪽에 비유를 들어서 제가 조금 설명을 드리도록
하겠습니다 자 우선 제가 앞서 말씀드린 것처럼 이 개체 지향 프로그래밍을
이해하기 위해서는
요 하나의 프로그램이 여러 개의 형태의 로직으로 이루어져있다
그리고 그 로직을 이렇게 그룹핑 시켜놓고 변수들
그러지 관련된 변수 그러지 관련된 메쏘드 들을
이렇게 그 루피 시켜 놓은 것을 제가 객체 라고 말씀을 드렸습니다
그렇게 객체를 만들게 되니까 이것을 다른
곳에도 활용할 수 있게 된다 라는 것이죠
재 활용성이 높아 진다는 겁니다 자 그럼 이 객체를 다른 곳에 사용하기
위해서는 사용한다는 것은 이 객체가 다른 곳에서
아니면 여러 곳에서 무엇으로 활용되는 것이 냐 면 일종의 부품 으로서
사용되고 있는 겁니다
그래서 여러분들이 객체를 만든다 좋은 객체를 만든다는 것은 어떻게 하면
그 로직을
재활용 가능 하도록 부품 와 하는 것이라고 볼 수 있는 겁니다
그러면 하드웨어에서 이루어지고 있는 부품 아이를 한번 생각을 해보죠
내 몸은 약간의 재미라고 뭐 호기심
뭐 이런 이렇게 생각하시면 될 것 같습니다 자 여기 보시면 이거 초창기에
컴퓨터입니다 요렇게 생긴 컴퓨터 여러분들 집에 없죠
저도 없습니다 제가 데이 초창기 컴퓨터는 어떻게 보면은 이 하나의
컴퓨터는 하나입니다
만약에 여러분이 요 키보드 있죠 키보드가 고장났어요
그러면 컴퓨터를 바꿔야 됩니다
모니터 고장 났어요 컴퓨터를 바꿔야 됩니다
또는 이해하는 들어 있는 하드디스크 고장 났어요 아마도 컴퓨터를 바꿔야
될 겁니다
그 얘기는 뭐냐 이 컴퓨터는 하나의 부품이 면서 하나의 완제품 이기
때문에 만약에 이 중에 하나라도 고장 되면 이 컴퓨터는 통채로 바꿔야
되는 녀석 이라는 거죠
물론 술이라는 것이 있겠지만 예 그 소리는 아무나 할 수 있는 것은
아니니까요
자 그래서 이러한 문제를 극복하기 위해서 이 컴퓨터를 추상 합니다 어떻게
주상 아냐 기능으로 쪼개는 거예요
화면에 보여주는 뭐니 모니터 디스플레이 그리고 여기에 있는 요 입력을
담당하는 키보드
그리고 실제로 컴퓨터 연산을 담당하는 cpu 나 메모리 와 같은 것이
들어 있는 본체
요렇게 기능별로 쪼개고 그 각각의 기능에 해당되는 부품들을
어 그룹핑 해서 개념 말을 시키는 것이죠
그리고 그 개념의 따라서 그렇게 추상화 한 결과에 따라서 구체적인 제품을
만들어서 구체화 시킨 결과가 방울 다음 그림 입니다
어때요 이전 컴퓨터 와 비교했을 때 어떤 차이가 있나요
자의 컴퓨터 같은 경우는 모니터와 본체 와 마우스
그리고 키보드가 요렇게 서로 쪼개져 있습니다
다시 말해서 여기 있는 것 하나가
컴퓨터 이지만 이 하나의 컴퓨터 라가는 완제품을 구성하고 있는 부품들이
만들어진 것이죠
그럼 어떤 장점이 생기나요 만약에 모니터 고장 났어요
그러면 모니터만 교체하면 됩니다
키보드가 고장났어요 키보드만 고추 교체하면 됩니다
또는 화면이 나오지 않아요 그러면 다닌 다른 모니터를 꽂아 보면 아
모니터가 고장 났구나
아니면 컴퓨터에 어딘가에 문제가 생겼구나
본체 어딘가에 문제가 생겼구나 이런 것들을 사용하는 사용자도 쉽게 이해할
수가 있다라는 것이죠
바로 이러한 점 때문에 컴퓨터는
예전에 단일화 되어 있던 모습에서 벗어나서
보시는 것처럼 이렇게 여러 가 에 여러 개의 구성요소 컴퍼넌트 예 여러
개의 부품으로 구성되어 있는 시스템으로 바뀌게 되는 것이죠
프로그램도 마찬가지라는 생각을 여러분들 제가 하는 얘기 해서 계속 하셔야
됩니다
그런데 이 하나의 완제품을 어떻게 부품 아 시킬 것이냐 는
어시 사실 쉬운 문제는 아닙니다 예를 들면 지금 이 컴퓨터는 이런식으로
부품 말을 했고 추상화를 했지만 지금 보고 계신 이 컴퓨터 같은 경우는
보시는 것처럼 모니터와
예 모니터를 부품 안 시킨 것은 이전 컴퓨터와 마찬가지지만 보시는 것처럼
저장장치를 컴퓨터 바깥쪽으로 때 냈어요
이게 저장장치 아니지 확실친 않지만 그리고 컴퓨터 본체와 키보드를 이렇게
붙여놨습니다
어때요 예
어떻게 부품 말을 시키고 어떻게 설계 아니냐가 달라지고 있죠
그리고 지금 보고 계신 이 컴퓨터는 현 시점에서
예 좀 2014년 인데요 현 시점에서 최신 컴퓨터 라고 이야기 되고 있는
컴퓨터입니다
그런데 이 컴퓨터 같은 경우는 물론 보시는 것처럼 키보드나 마우스는
이렇게 쪼개져 있지만

아까 우리가 봤던 데스크탑 컴퓨터 와는 다르게
모니터 그리고 본체 또 저장장치 이런 것들이 하나로 다니다 서 있습니다
그리고 우리가 사용하는 요렇게 생긴 그 스마트폰 있죠
스마트폰 같은 경우는 모든 기능이 하나의 본체 안으로 들어가 있어요
그 얘기는 뭐예요 아까 우리가 봤었던 초창기의 컴퓨터 1대에 그 부품 아
되어 있지 않은 컴퓨터와 지금 보고 계신 이 최신 컴퓨터는
다시 비슷한 모습이 되고 있다는 것이죠 아마도 이렇게 된 이유는

뭐 하드웨어의 가격이 달라졌 거 나 또는 각각의 부품들이 경량화 되면서
이것들을 쪼개는 것에 쪼개 쓸 때의 매력이 반감되고 있거나 그런 여러가지
이유로 인해서
시대에 따라서 어떻게 부품 말할 것이냐 또는 어떻게 추상을 할 것이냐
라고 하는 그 관 점
이런 것들을 계속해서 바뀌게 되는 것이죠 그래서 제가 얘기하고 싶은 것은
이 부품 아 라고 하는 것을 말씀을 드리면서
동시에 설계 라는 것이 또 어떤 소프트웨어를 만드는 방법이라는 것이
고정된 방법이 있고 정답이 없다 라는 말씀을 드리고 싶은 겁니다
어떻게 보면 가장 중요한 것은 어떤 정답이 있다기 보다는 자신이 처해
있는 환경 자기가 하고자 하는 것에서 적합함을 찾는 것이
우리에게 주어진 숙제라고 할 수가 있겠죠
그래서 우리가 지금까지 배웠던 이 프로그래밍의 여러가지 기능들 중에서
어부 푸마의 특성이라고 할 수 있는 것을 생각해 볼 수 있는 것이 바로
메쏘드 라고 할 수 있습니다
그리고 제가 메쏘드 수업에서 어떻게 설명을 드려야 면 이 메소드 라고
하는 것이 이 프로그램 안에 있는 여러 가지
그 기능들 중에서 중복적으로 사용되는 그 중복적으로 사용되는 것을
예 하나의 로직으로 별도로 빼서 재 활용성을 높인 것이고 이러한 컨셉은
객체지향 으로도 이어진다 라고 말씀드렸죠 발상 자체가 비슷합니다
예 그래서 200 개체 이 메소드 라는 것도 일종의 부품 마이애 라고 할
수가 있어요
그래서 이 기능별로 로직을 묶어서 그 메소드들을 조합해서 우리는 하나의
완제품 이라고 할 수 있는 소프트웨어를 만들게 되는 것이죠
요렇게 메소드를 만들면 코드의 양을 극적으로 줄일 수가 있고 메쏘드 별로
기능이 분류되어 있기 때문에 여러분이 필요한 코드가 있을 때 그 메소드를
찾으면 그 필요한 코드를 훨씬 더 빠르게 찾을 수가 있겠죠
또 어떤 소프트웨어에 개선 일어났을 때 메쏘드 만 수정하면 그 매수 들을
사용하고 있는 모든 곳에서 동시다발적인 개선이 이루어진다 라고 하는 것이
이 부품 의 장점 이라고 생각할 수가 있는 것이고 바로 이러한 것들을 한
단계 더 계승 시킨 것 더 발전시킨 것이 객체지향 이라고 할 수가 있을
겁니다
그래서 이런 메쏘드 와 같은 것들이 도입되면서 이 굉장히 편리하게
프로그래밍을 할 수 있게 돼 있었겠죠 과거로 치면
그런데 메소드가 점점 우리에게 익숙해 이스카 익숙하게 되고 또
소프트웨어가 점점 커지면서 어느 순간부터 메소드가 없을 때와 똑같은
경험을 사람들은 개국에 하게 됩니다
그 얘기는 뭐냐 인간이 도달할 수 있는 인지의 한계까지 극한까지
소프트웨어가 거대하고 복잡해지기 시작했다 라는 것이죠 그러면 이제
개발자들은 이 한 단계 더 도약할 준비를 하게 되는 것이죠
예 그래서 만들어진 그래서 조 추출된 기능이 객체지향 이다 라고
여러분들은 생각을 하셔야 될겁니다 그래서 이 객체 재앙 이라고 하는 것은
메소드로 도 비유할 수가 있고 이 파이와 디렉터리 로터 비유할 수가 있는
겁니다
그래서 이수 켁 그 공학 이 발전하는 정보원이 발전하는데 있어서 아주
중요한 방향성을 중에 하나는 연관되어 있는 것들을 묻고 그리고 연관되어
있지 않은 것들을 분리하는 예 그러한 이 방향성을 갖게 되는데 그런
방향성을 저는 그 루피 카테고리 라이징 또는
분류 라고도 하고 또는 부품 하라고 도 지금까지 표현을 하고 있는 겁니다
자 그런데 그 부품 하라고 하는 것이 단순히 가능하다고 해서 모든 곳에서
자신이 만든 코드를 재활용할 수 있느냐 그건 결코 아니라는 것이죠 그래서
이제 활용성을 높이고 2 부품 으로서의 가치를 높이기 위해서 여러가지
기능과 여러가지 반복문 들이 들어가게 되는 것이죠
예 그래서 어 이번에 제가 설명드릴 것은 니카 캡슐 하라고 하는 것인데요
여기 제가 적어놓은 것처럼 제대로 된 부품 이라고 한다면 그것이 어떻게
만들어졌는지 모르는 사람도 그 부품을 사용하는 방법만 알고 있으면 그것을
쓸 수 있어야 됩니다 예를 들며 여러분 일반 사용자 인데
모니터가 어떻게 동작하는지 아시나요 예 전자공학을 하지 않으셨으면
모를겁니다 그럼에도 불구하고
컴퓨터에게 컴퓨터의 모니터를 연결하는 방법은 어떻다 라는 사실만 알고
있으면 여러분은 모니터를 사용할 수가 있게 되는 것이죠 그래서 이러한
것들을 우리는 뭐라고 악보통 객체지향 프로그래밍에서 뭐라고 하냐면 내부의
동작 방법을 단단한 케이스 안에 숨기고
여기서 얘기하는 케이스 는 이 맥락에서는 객체가 되겠죠
사용자에게는 그 부품에 사용 방법만을 노출하고 있는 것이다 라는 것에서
그 부품에 사용 방법은
정확하게는 메소드의
그 객체 안에는 어떤 메소드가 들어있고 그 각각의 메쏘드는 어떤 입력
값을 갖고 또 어떤 출력 값을 갖는다
그리고 그렇게 해서 어떻게 동작한다는 금 에 쏙 그 객체가 갖고 있는
메소드의 사용법만 을 알고 있으면 사용자는 그 객체를 이용해서 어떤
객체들을 조합해서 어떤 더 큰 프로그램 더 큰 완제품을 만들 수 있다
라는 그런 컨셉 인데요
이런 것을 정보의 은닉 와 인포메이션 하이디 또는 캡슐화 인 캡슐 레이
션 이라고도 부릅니다
즉 객체가 어떻게 생겼는지를 모르고도 이 객체를 사용할 수 있도록 하겠다
라고 하는 그런 취지가 어
바로 니콱 액수 라고 하는 것이죠
그리고 좋은 부품의 또 다른 특징은 을 인터페이스 라는 것을 들 수가
있을 겁니다
잘 만들어진 부품 이라면 부품과 부품을 서로 교환할 수 있어야 된다고
제가 얘기 하고 있죠
자 그런데 집에 있는 컴퓨터에 제가 a 사이에 모니터를
연결을 했는데요 이어 고장났어요 아니면 더 좋은 제품이 있어서 제가 b
사에 모니터를 사서 연결할 수가 있는 것이죠
다시 말해서 모니터와 컴퓨터는 서로에 대해서 교황 관계에 있는 겁니다
즉 뭐니 제가 쓰고 있는 컴퓨터에 새로운 모니터를 달수도 있고 제가 쓰고
있는 모니터는 그대로 두고 컴퓨터를 교체할 수도 있는 것이죠
자 이런 일이 가능한 것은 바로 모니터와 컴퓨터를 연결하는 케이블의
규격이 표준화되어 있기 때문에 가능한 일입니다
지금 보고 계신 요 그림은 이 모니터와 컴퓨터를 연결할 때 사용하는
hdmi 라고 하는 형식의 케이블의 이 표준을 정해 하고 있는 그럼
그림입니다
이 케이블은 어떤 모습으로 생겼고
그리고 몇 개의 핀이 있고 각각의 핀의 들어가는 데이터는 어떤 형식 이다
라는 것이 표준에 정의되어 있는 겁니다 그러면 각각의 제조사들은 이
표준의 적혀있는 대로
요렇게 케이블의 모양을 만들고
이렇게 생긴 케이블을 통해서 정해진 데이터를
출력하고 입력하게 되면 자신들이 만들고 있는 장치가 잘 만들어지도록 만
만들게 되면 그 제품은 어디에다 도 어디에다 꽂아서 쓸 수도 있는 부품이
되는 것이죠
그리고 만약에 음
요 각각의 표준 들은 요렇게 요 케이블만 케이블 마다 홈에 모양이 있어서
만약에 다른 표준 에 해당되는 것을 구현한 제품을 꽂을 려고 하면
물리적으로 생겨 있는 생겨 생긴 모습 자체가 다르기 때문에 r 꽂을 수도
않도록 해서 어떤 고장이 나거나 또는 잘못 잘못 거 나 이런거 에서
발생하는 위험 같은 것들을 위원회 방지하고 있는 것이죠
바로 이러한 것들을 일종의 표준이라고 말 발을 하고요
요렇게 장치와 장치를 연결하는 바로 그 연결점 예 모니터와 컴퓨터라고
html 케이블 같은 것이겠죠
에그 연결점 적 점 을 인터페이스 라고 합니다
바로 이 인터페이스가 존재하기 때문에 각각의 부품은
2 부품 으로서의 가치가 높아지는 것이고 그 서로 사용할 수 없는 관계에
있는 것은 예
결합 쫓아 되지 않도록 강제할 수 있는 그런 장치가 1종 인터페이스 라고
할 수 있는데 이 프로그래밍에서 도 바로 이 인터페이스의 해당되는 것을
소프트웨어 적으로 적용 제공을 하고 있습니다
예 그게 어떤건지 는 인터페이스 수업에서 우리가 살펴볼 거에요
어떠세요 소프트웨어 라고 하는 것이 하드웨어가
하드웨어와 크게 다르지 않다 라는 생각이 드시나요 그게 이번 시간에 목표
고요 그리고 우리가 이미 익숙한 하드웨어
예 여러가지 추구하는 바 지향하는 바가 이 전혀 다른 성격을 갖고 있는
소프트웨어 세계에서는 어떻게 구체화 되는가에 대한 궁금증이 생기신다면
제가 이 긴 시간을 들여서 설명한 이 보람이 있는 겁니다
그래서 이번 수업의 목표는 여러분들이 그런 호기심을 갖도록 하는 거고
그런 흥미를 느끼도록 하는 것이 이번 시간에 목표 였어요
자 그런데 제가 지금까지 객체를 부품으로 비유해서 설명했고 하드웨어로
설명을 했는데 제가 말씀드린 것처럼 비유는 비율 뿐입니다
비유는 상당히 큰 위험이 있어요 왜냐면 유산 유사점 뿐만 아니라 예제가
비율을 사용하는 사람이 의도하지 않은 차이점 까지도 전달될 가능성이 있기
때문입니다
이게 바로 비유 함정입니다 소프트웨어는 소프트웨어 고 하드웨어는 하드웨어
입니다
그래서 제가 지금까지 하드웨어의 비율 했지만 소프트웨어는 하드웨어 갈 수
없는 굉장히 중요한 여러 가지 것들을 할 수가 있어요
다만 그건 지금 우리가 문법적인 것을 얘기 하지 않고는 설명할 수 없기
때문에 지금 말씀드리지 못한 것 뿐입니다
이를테면 복 책 또는 상속 이런 것들은 하드웨어 갈 수 없는 일입니다
정신적인 활동에 소프트웨어 많이 할 수 있는 것이기 때문에
어떻게 하면 이런 것들은 소프트웨어 극치 라고도 할 수 있는 굉장히
중요한 부분이에요 하면 지금 설명할 수 없는 것이 라는거 게 아쉬울 뿐인
거죠 자 이렇게 해서 제가 음 개체 재앙을 시작하기 전에
여러분들과 하고 싶었던 얘기를 긴 시간을 거쳐서 주 풀어내 봣습니다
어떻게 그 객실 재앙에 대한 흥미가 생기셨네요
그러면 좋고 아니라도 목에 쳤습니다 그러면 이제 여기까지 좀 추상적인
얘기는 하고요
다음 시간부터는 객체지향 프로그래밍을 이 언어가 어떻게 지원하는가
언어적인 차원에서는 어떤 문법적인 요소를 통해서 객체지향 프로그래밍
이라고 하는 그 프로그래밍
stl 또 프로그래밍이 어떤 4조 를 지원하고 있는가에 대해서 다음
시간부터 살펴보도록 하겠습니다

댓글 0개

등록된 댓글이 없습니다.

 
Total 93건 1 페이지
썸네일
제목

본 사이트의 컨텐츠는 명시적으로 공유기능을 제공하고 있는 공개된 자료를 수집하여 게시하고 있습니다.

저작권에 문제가 있는 자료일 경우 impactlife@naver.com 으로 신고해 주시면 즉시 삭제처리하겠습니다.

Menu