-
OOP, 패러다임, 기능성을 갖고 있는 언어의 특성
대비되는 프로그래밍 패러다임은 procedural 프로그래밍
1.절차적으로 실행한다
2.prodecural이라는 기능을 중요하게 사용한다 = functions = 루틴 = 서브루틴
함수라는것을 이용해서 프로그램을 만들어가는 패러다임, 그 기능을 제공하는 언어들
객체지향프로그래밍의 핵심은 영어로 Object, 객체에 있습니다.
procedural프로그래밍 기반 위에서 Object프로그래밍이 탄생한것. 부족한걸 보완해주는 역할
함수보다 더 큰 틀의 정리정돈 도구인 객체라는 것이 존재한다.
--------------------------------------------------------------
정보의 양이 많지 않다면 기억하고 직접 이야기 하면 된다.
정보의 양이 많아지면 기록할 필요성이 생긴다. 종이에 정보를 기록해 저장한다. 다른사람한테 전달한다.
근데 종이가 많아짐에 따라 연관된 종이들끼리 그루핑할 필요성이 생김.
그에따라 우린 책을 만듦
책이 많아지면 책들을 잘 정리정돈하기 위해 책장을 만들고
책장이 많아지면 서재를
서재가 많아지면 도서관이 됨.
링크와 검색을 통해서 정보를 검색하게 되면 전세계적인 규모의 거대한 도서관이 만들어진 것.
->어떤것이 양이 늘어나면 양이 늘어남에 따라 완전히 다른 관리 체계가 필요해진다.
그 관리체계가 등장하기 전까지는 양이 늘어나지 않거나(오) 늘어난다고 하더라도 큰 의미가 없거나
사람들에게 고통을 줌.
코드는 처음에 어떻게 만들건가 이게 중요한 의미를 갖겠지만
시간이 지날수록 코드들간의 간섭현상이 일어나면서 프로그램의 복잡도가 기하급수적으로 높아짐
소프트웨어는 인간이 감당할 수 없는 수준까지 굉장히 빠른 속도로 복잡해지기 때문에
인간이 감당할 수 없는 복잡도에 도달한 소프트웨어는 더이상 소프트하지 않다.
인간이 담을 수 있는 그릇의 크기가 있는 것.
해결법 2가지
1.내용물을 버리고 새로운 기능을 넣는다.
2.있는 기능을 잘 정리정돈해서 그 기능을 작게 압축한다.
장난감이 널부러져 있을때 박스에 넣고 박스에 Toy라고 이름붙이면
우리는 안에 내용물을 신경쓸 필요없이 Toy라는 이름에 대해서만 관심을 가지면 된다
우리의 정신적인 에너지를 덜 쓰기 때문에 우리의 뇌가 기분 좋게 느끼는 걸 겁니다 - 오..
수납상자와 같은 역할을 했던게 function, method
매우 복~잡한 코드를 함수라는 수납상자에 담아서 이름을 붙여버렸다.
->이제 우리는 이 함수의 내용에 대해선 더이상 관심을 가질 필요가 없이 우리는 그냥 이 ~~()라는
함수를 호출하는 것을 통해서 사용할 수 있게 되는 것. 이 함수가 어떻게 생겼는지 몰라도 상관이 없다.
저 함수를 사용하면 어떤 일이 일어난다는 큰 틀에서의 개념만 갖고 있어도 된다.
어마어마하게 복잡했던 프로그램의 복잡성이 ~~()라는 코드로 단순해진다 라는게 함수의 폭발적 효과
처음부터 함수가 있었던건 아닙니다 여러분. 함수도 프로그래밍이 발전하는 역사에서 나중에 등장한 것
중 하나일 뿐이에요.
함수를 통해서 복잡성을 낮추는데는 성공했지만, 그러면 소프트웨어는 더이상 복잡해지지 않을까요?
아니죠. 함수와 같은 테크닉을 이용해서 복잡도를 낮추는 것에 성공하면 이제 여유가 생겨
그럼 그것을 또 다른 기능을 추가하는 것을 통해서 역시나 인간이 감당할 수 없는 수준까지
빠른속도로 복잡해 지게된다는 것. -> 함수들이 여러개가 생기는 것. 함수가 없었던 상황과 똑같은
상황이 발생. 이제 이 함수들을 잘 관리할 필요가 있기 때문에
이름을 비슷하게 한다거나
같은위치에 모아놓는다거나
이런 여러가지 테크닉을 써서 몸부림을 침.
근데 컴퓨터 언어를 만들고 연구하는 사람들은 좀 더 근본적인 해결책에 대해서 고민을 했겠죠
그리고 그 근본적인 해결책으로 제시된 여러 가지 방법들중의 대표 하나가 바로 객체지향 프로그래밍
서로 연관되어있는 함수와 변수들을 객체라고 하는 것으로 그루핑함. 그리고 그 객체에 적당한 이름붙임
그리고 그 객체 안에 들어 있는 함수들을 호출할 때에는 toy.do1() toy.do2() 이런식으로
연관된 함수들을 다른 함수들과 구분되게 하고 분류하는 정리정돈하는것이 객체지향의 핵심적인 idea
또 상속 다형성 인터페이스 여러가지가 있지만 일단 저걸로 알고 있으면 덜 고통스러울 것.'Lang > Lang' 카테고리의 다른 글
Try / Catch (0) 2022.06.04 vscode 엘리 : Shortcuts, Extension (0) 2021.12.05 vscode 코딩애플 (0) 2021.12.01 vscode 생활코딩 (0) 2021.12.01 compliation & interpretation (0) 2021.11.09