오늘은
새로 접하게 된 단어들이 낯설어서 그 의미를 파악하는 시간을 가져보기로 했다
메서드(method) 또는 멤버 함수는 객체 지향 프로그래밍에서 객체와 관련된 서브 루틴 (또는 함수)이자 클래스가 갖고 있는 기능이다. 데이터와 멤버 변수에 대한 접근 권한을 갖는다.
클래스 기반 언어에서 클래스 내부에 정의되어 있다. 메서드는 프로그램이 실행되고 있을 때 클래스에서 생성된 인스턴스와 관련된 동작을 정의한다. 메서드는 런타임 중에 클래스 인스턴스 (또는 클래스 객체)에 저장되어 있는 데이터에 접근할 수 있는 특수 속성을 가지고 있다. 바인딩은 클래스와 메서드 간의 연관관계를 말한다. 클래스와 관련된 메서드는 클래스에 바인딩 할 수 있다. 메서드는 컴파일 타임 (정적 바인딩) 또는 런타임 (동적 바인딩)에 클래스에 바인딩 할 수 있다.
비전공인 나로서는 나열된 단어간에 연결점을 느낄 수 가없다
메서드의 의미를 알기 위해서 그 설명을 보고자 하는데 그 설명에서 조차 나는 의미를 이해할 수 없는것이 있다는것이다
멤버함수란 무엇인가? 클래스 내부에서 정의된 함수
클래스는 무엇인가?
클래스(class, 어원: classification)는 객체 지향 프로그래밍(OOP)에서 특정 객체를 생성하기 위해 변수와 메소드를 정의하는 일종의 틀(template)이다.
이해를 쉽게 해주기위해서 비유를 해준바 클래스는 틀이라고 한다
객체 지향 프로그래밍은 무엇인가?
프로그램 설계방법론이자 개념의 일종으로, 명령형 프로그래밍에 속한다. 프로그램을 단순히 데이터와 처리 방법으로 나누는 것이 아니라, 프로그램을 수많은 '객체(object)'라는 기본 단위로 나누고 이들의 상호작용으로 서술하는 방식이다.
이 개념은 구분 할 수 있는 기준점으로서 다른 개념을 요구한다
요컨데 이해 하려면 다른 것도 알아봐야한다는 것이다
그렇다면 OOP 말고 무엇이 있는가
- 절차적 프로그래밍이란 단순히 순차적인 명령 수행이 아니라 루틴, 서브루틴, 메소드, 함수 등(이를 통틀어 프로시저라고 한다.)을 이용한 프로그래밍 패러다임을 뜻한다. 명령형 프로그래밍의 일종이다
이는 내가 주먹구구식하던 프로그래밍이 유사성을 띄고있다
절차적 프로그래밍은 이를 테면 프로그래밍의 원시적 방법으로서 간단하거나 짧은 코드를 실행 시키는 데에는
문제가 없다만 시간이 지나 방대한 양을 요구하는 현대에 이르러서는 이렇다할 다양한 이유가 있지만
가장 큰것은 유지보수면에서의 난해함으로 인하여 새로운 방법(개념)의 등장이 필요한 것이었다
이로 인해서 OOP가 등장하게 되는데 이는 위에 명시 된 바와같이 객체라는 기본단위로 프로그램을 나누고
이들을 상호작용으로 서술하는 방식이다
달리 말하자면 하나에 모든 것을 만드는 것이아니라
나눠 만들어 하나로 합치는 것이다
내가 지금 만들 수 있는 코드로는 해당 개념에 대해서 이해 할 수 있는 겨를이 없다
아무리 길게 만들어 봐도 스크롤로 한번에 눈에 들어오는 길이이기 때문이다
말로 표현을 해보니 객체 지향 프로그래밍은 실로 실용적이라는 생각이 든다
쓰임에 충분히 이해가 가고 납득이 가는 개념이자 방법이다
메소드의 정의를 알고자 시작한 일이지만 멀리 돌아가게 되었다
이또한 필요한 것이리라
다시, 메소드란 무엇인가? 내게 주어진 문장이 이해하기 난해하다면 문장의 순서를 바꿔보는 것도 좋다
문장을 찢어 나열해보는 것도 방법이다
메소드란 무엇인가?
- 객체 지향 프로그래밍에서 객체와 관련된 서브 루틴이다.
- 클래스가 갖고 있는 기능이다.
- 데이터와 멤버 변수에 대한 접근 권한을 갖는다.
- 클래스 기반 언어에서 클래스 내부에 정의되어 있다.
메소드는 객체와 관련된 서브 루틴이다
또 다른 단어 서브 루틴
서브 루틴은 무엇인가?
서브루틴은 루틴에 대해 순차적으로 수행된다는 특징이 있다. 만약 루틴이 수행이 되지 않을 경우 서브루틴 또한 수행되지 않는 것이다. 함수 안에 함수가 있을 경우 바로 안쪽의 함수를 서브루틴이라 부른다.
함수 안에 함수 그것은 서브루틴인다
그렇다면 메소드는 객체안의 함수라는 의미인가
데이터와 멤버 변수에 대한 접근 권한을 가진 함수 문장을 풀어해치니 난해함이 증폭되었다
이를 이해하기 위해선 다른 방향의 탐구가 필요해 보인다
아니면 누군가에게 물어보는 것도 괜찮으리라 생각한다
내가 이해할수없는 영역이 누군가에게는 너무나도 낮은 수준의 것일수 있지않던가
명쾌한 답이 있노라면 더할나위없이 좋지만 나 자신이 이러한 개념에 대해 이해를 해야만
앞으로 나아갈 수 있을 것이란 예감이 든다
예감 만으로 터부할 것이아니라 눈앞에 일렁이는 진실이 아닌지
'코딩 오늘' 카테고리의 다른 글
2023.03.24 (0) | 2023.03.28 |
---|---|
2023.03.27 (0) | 2023.03.28 |
2023.03.22 약속 (0) | 2023.03.22 |
2023.03.21 미션 파서블 (0) | 2023.03.21 |
2023.03.20 파이썬기초 (0) | 2023.03.20 |
댓글