생활코딩 객체지향프로그래밍 (1/3) : 오리엔테이션 > PHP

PHP

PHP Web Programming 강의 리스트

생활코딩 | 객체지향프로그래밍 (1/3) : 오리엔테이션

본문

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

 예 지금부터 객체지향 프로그래밍 수업을 시작하겠습니다

우리 수업의 시즌 투 줘 예 그래서 지금까지 절차 지향 과 관련된
기능들을 주로 살펴 보셨다면 이제 부터 살펴 볼 것은 바로 객체지향
이라고 하는 주제로 우리가 본격적으로 들어가 보는 겁니다
어 객체지향 프로그래밍 이라고 하는 것은 여기 제가 적어놓은 것처럼
오브젝트 or end 드 프로그래밍의 예 약자를 따서
객체 오브젝트는 객체 라는 뜻이고요
오리 nt 드는 지 향해 예 추구
뭐 이런 뜻이죠 프로그래밍
그래서 객체지향 프로그램 이라고 하는 겁니다
또 줄여서 는 앞에 있는 이니셜을 따서 op 라고도 부릅니다 이것들이다
같은 말이에요
2 객체 지향 프로그래밍 이라고 하니 말 속에도 이미 포함이 되어 있는
것처럼 이 객체지향 프로그래밍의 핵심적인 키워드는 바로 젤 앞에 붙어
있는 객체 라고 할 수가 있겠습니다 영어로는
오브젝트
알고 스펠링이 많이 상해 지네요 자 오브젝트
이게 괴체 줘 그래서 우리가 객체가 무엇인가를 이해하는 것이 객체지향
프로그래밍의
어떻게 보면 출발점이라고 할 수 있는데요 이 객체지향 프로그래밍에서
얘기하는 객체를 조금 추상적이고 어렵게 얘기하면
어 상태 예 프로그램을 구성하고 있는 로직을 상태와 행위로 5구 부분에서
서로 연관되어 있는 상태와 행위를 그룹핑 해논 이 카테고리 라이징 한
것을 일종의 객체 라고 할 수가 있습니다
그리고 그 객체는 일종의 레고블럭 처럼 객체와 객체 를 조합해서 하나의
완제품 이라고 할 수 있는 소프트웨어를 만들어 가는 그런 프로그래밍
기법이 또 객체지향 프로그래밍 이라고 할 수가 있는 것이죠 자 그런데 이
객체지향 프로그램 이라는 이 말은
저는 별로 좋아하진 않습니다 왜냐하면 특히나 이 객체 라고 하는 가장
중요한 이 키워드가
이 풍기는 어떤 냄새 때문인데요
느낌 때문인데요 어떤 느낌을 준 하면 굉장히 철학적인 느낌을 주지 않나요
예 사실 우리 현실에서 객체 란 말을 쓸 때가 거의 없죠
또 객체지향 프로그래밍을 보통 객 개체 지향 프로그램이라고 하는데 저는
뭐 개체나 객체나
어 잘 쓰지 않는 말인것 같습니다 그렇다 보니까 이 객체지향 프로그래밍을
처음 접하는 분들이
이것을 어떤 공학에 대 상 또는 어떤 기술의 대상 이라기보다는 굉장히
전략적이고 심오한 느낌을 갖는 그런 경험을 하시게 되는데 물론 객체 제한
프로그램 이라고 하는 것은 상당히 이 철학적인
어떤 주제라고 할 수 있는 면이 있긴 하지만 이 처음 객체 지향 을
공부한 입장에서 그런 철학적인 느낌은
어 이걸 공부하는데 있어서 미궁에 빠진 예 미궁에 빠져 있다는 그런
느낌을 갖게 할 뿐인 겁니다
여러분들은 객체지향 프로그래밍 이라고 하는 것에 대한 문법적 인 어스 임
문법적인 형식을 배우는 것이고 또 객체를 어떻게 만들고 또 그 객체를
어떻게 사용해야 되는 것이 것을 배우는 것이냐 에 대해서 여러분들이
집중을 하셔야 됩니다
너무 추상적으로 객체지향 프로그래밍을 받아들이지 않으셨으면 좋겠다 는
얘기를 하는 거예요
그리고 제가 방금 말씀드렸던 객체 라고 하는 것이 상태
행이 로 이루어져 있다는 이 말도 대단히 위험한 표현일 수 있습니다 왜냐
상태 라는 말과 행 이라는 말 어 상당히 광범위하고
이 범위가 넓은 표현이 잖아요 제가 여러분들께 말씀드리고 싶은 것은 어
조금 구체적으로 생각하자 라는 겁니다
그래서 좀 그림을 그려서 설명을 좀 들여 보면
어 지금 보고 계신 이 웹 사이트 open tools 라는 사이트
자 이 사이트는
이렇게 구성이 되어 있습니다
그래서 여기에는
글목록
그 여기에는 본문
그러기에는 댓글 뭐 이런 식으로 이루어져 있는 사이트입니다
자 그래서 여기 이 높은 튜토리얼 s 라인이 사이트 여러분 일반적으로
알고있는 그런 소프트웨어는 조금 다르지만 이런 웹서비스 도 모르고 웹
애플리케이션 이라고 부르고
이것도 분명히 소프트웨어 입니다 그리고 자바를
아주 많은 경우에 이런 사이트를 구축하는데 사용을 하죠
그래서 이 open tools 라니 사이트 여러분들 보고 있는 생활코딩
홈페이지 같은 경우는 하나의 프로그램인데 그 하나의 프로그램 안에는
글 목록을 출력해 주는 그런 로직이 있을 것이고요
글 본문에 출력해주는 오직 이 있고 댓글을 출력하고 추가하고 또 수정하고
삭제하는 그런 로직이 있을 겁니다
그래서 하나의 프로그램은 하나의 취지를 가지고 있는 로직으로 이루어진
것니라 보시는 것처럼 여러 개의 목적성을 갖고 있는 로직 뜰의
집합이라고 볼 수가 있습니다
그런데 처음에 서비스를 만들고 처음에 애플리케이션을 만들 때는 사실은
코드가 많지 않죠 코드가 많지 않기 때문에 우리가 그냥 이전 시간까지 r
배웠던 절차 지향 프로그래밍에서 배웠던 조건문 반복문 이런 것들을
이용해서 프로그램을 짜서 오픈 튜토리얼 쓰란 이런 사이트를 충분히 구축할
수가 있습니다
그런데 사이트의 규모가 커지고 그 사이트를 구축하는 데 그 애플리케이션을
만드는 데 동원되는 인원들이 많아지고
그리고 오랜 시간동안 프로그램의 프로젝트가 진행되는 과정에서 여러가지
어려움들을 겪게 됩니다
전문용어로는 막장 이라고 하죠 그러면 어떤 어떤 생각을 하게 되냐면
자연스럽게
이 복잡한 로직 여긴 이 사이트를 구축하기 위해서 이 사이트에 들어가
있는 1호 조직들을
이 기능별로 그룹핑 하고 싶어하는 생각을 자연스럽게 하게 됩니다 누구나
요 그럼 어떻게할까요
이 사이트를 구성하고 있는 이 글 목록 본문 댓글과 같은 이런 기능적으로
로직 뜰을 9분해서 만약에 글 목록과 관련된 로직 이라고 하면 이 변수
이름 앞에는 뭐
리스트 언더바 블라블라
그리고 본문과 본문과 관련된 변수 라면
아티클 언더바 블라블라 또는 메소드 라면 아티클 언더바 블라블라
뭐 이런식으로 한다.거나 그리고 글 먹는것 글 목록과 관련되어 있는 변수나
또 메쏘드 또는 본문과 관련된 변수나 메소드를 각각의 기능별로 쪼개서
이 코드 상으로 서로 연관되어 있는 코드 끼리 이렇게 뭐 않는다거나 이런
여러 가지 조치들을 취하게 되는데 바로 그것이
일종의 그룹핑 또는 분류 아 영어로는 카테고리 지컷 카테고리 라이징 뭐
이렇게 얘기할 수가 있는 것이죠 그래서 이런 소프트웨어가 커지면서
발생하는 여러 가지 문제들
뭐 다른 말로 막장 이라고도 하고 그 막장 으로 인한 일종의 절망감 들을
계속해서 사람들이 받다 보면 자연스럽게 그것을 해소할 수 있는 방법들에
대해서 모색하게 되겠죠
그그 반크 모색 된 결과 중에 하나 를 저는 객체지향 이라고 생각하고
여러분들도 그런 틀에서 객체 재앙을 생각하셨으면 좋겠다 라는 겁니다
그래서 여기에 있는 이 본문
또 여기에 있는 댓글 여기에 있는 글 목록을
글 목록과 관련되어 있는 로 젝 트
제가 여기서 얘기하는 로직은 변수
그리고 메쏘드 입니다
아 변수와 메소드를 서로 연관되어 있는
기능별로 그룹핑 하는 기능을 프로그래밍 차원에서 언어 차원에서 제공하게
되는 거죠
그렇게 해서 그룹핑 된 하나하나에 단위들을 바로 객체 라고 부릅니다
여기 이렇게 본문 있으면
본문 이라는 요 객 제안에는 본문과 관련되어 있는 변수와
메소드가
이렇게 응집되어 있고 또 댓글 과 관련되어 있는
변수와
역시 마찬가지로 메쏘드 들 뭐 예를 들면 댓글 다는거 댓글 삭제 하는 거
댓글을 수정하는 것과 같은 이라는 메소드를 겠죠
그런 것들이 요렇게 객체 라고 하는 단위로 응집되어 있는 것이죠
동시에 어 서로 연관성이 없는 다른 성격을 가지고 있는
어 로직 들과는 이런식으로 객체를 껍데기로 해서
분리되어 있는 것이죠 즉 서로 연결되어 있는 것은 객체를 껍데기로 응집
되고 서로 연결 상의 떨어지거나 연관성이 없는 것들은 이 객체라는
껍데기를 중심으로 해서 이렇게 분류 9분되는 것이 이 객체의 가장 중요한
기능이라고 할 수가 있겠습니다
자 그렇게 우리가 객체를 분류해서 이 소프트웨어를 좀 더 명확하게
이해하고 좀 더 쉽게 관리할 수 있도록 여기 있는 요 기능별로 로직 뜰을
구애 악화시키고 분류하고 카테고리 라이징 을 하다 보니까 자연스럽게 객체
라고 하는
문법적 2 예 프로그램 자체가 프로그래밍 언어 자체가 제공하는 이 기능이
나타나게 되는 것이고 이 기능이 나타나니까 이 기능을 가만히 보니까 이건
댓글에 대한 기능이에요
그리고 이 기능은 꼭 open tutors 점 org 라는 사이트가
아니라 다른 사이트 에서도 사용할 수 있다 라는 생각을 할 수가 있는
것이죠 그러면 여기 있네요 댓글이 라고 하는 이것을 다른 사이트 또는
다른 애플리케이션에서 도 가져다 쓰게 되는 것이 가능해지는 겁니다
이렇게 분류를 했더니 그게 바로 이 프로그램이 에서 가장 중요한 개념
중의 하나라고 할 수 있는
제 활용성을
제 활 용 성에
객체가 기여하는 바라고 할 수가 있는 것이죠
이렇게 재 활용성이 높아 지니까 어 이미 사용하고 있는 로직을 다른 곳에
사용하게 되고 다른 곳에 사용하려고 하니까
실제로 그게 여러 가지 문제들을 또 발생 시키게 되는 겁니다
그래서 그러한 문제들을 완화시키기 위해서 여러가지 이 로직을 이 제안하는
또 로직을 컨트롤하는 여러가지 기능들이 이 추가 되게 되는데 그게 우리가
지금 마주하고 있는 객체지향의 여러가지 기능들이 바로 그런 맥락에서
나타난 것이겠죠
자 그래서 제가 이번 동영상을 정리하면서 여러분들께 말씀 드릴 것은
객체 지향 프로그래밍 이라고 하는 것은 객체를 만드는 것이고 그 객체
라고 하는 것은 추상적으로 생각할 대상니고 매우 붓 구체적인
문법적인 기능이 언어 차원에서 제공되는 기능입니다
그리고 하나의 객체 안에는 예 그 객체가 가지고 있는 취지
그게 본문 인지 댓글이 인지에 따라서 그 보그 취지에 아 그 취지 또는
그 기능과 연관되어 있는 변수와 메소드를 그 객체 라고 하는 단단한 거
껍데기에 안에다가 가둬 둔 것이고 그리고 서로 연관성이 없는 다른 로직과
예 9분해 주는 역할을 하는 것이 객체 라고 생각하시면 아마 좀 덜
추상적으로 느껴지실 겁니다
그래서 이번 시간은 일종의 오리엔테이션 시간이기 때문에 이번 시간에
우리가 코드를 보진 않구요
코드는 다음 시간에 볼 겁니다 그리고 여러분이 객체 지향 프로그래밍을
만드는 과정에서 중요하게 생각해야 될 만한 뭐 일종의 설계 적인 측면
또는 좋은 소프트웨어를 만들기 위한 여러가지 아이디어들 그런 것들에
대해서 제가 나 다음 동영상에서 뭐 제가 아는 범위에서
여러분들께 설명을 좀 드리겠습니다

댓글 0개

등록된 댓글이 없습니다.

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

저작권, 강의등록, 광고, 제휴등은 "관리자에게 문의"로 메세지 주시면 확인후 답변드립니다.

Menu