순차, 절차, 객체지향 프로그래밍
순차지향(Sequential Programming)
코드를 위에서부터 읽어들여 함수의 개념이 존재하지 않는다. 어셈블리어에서는 코드를 순차적으로 읽고 jmp나 goto 같은 명령어를 만나면 해당하는 위치로 이동하는 방식으로 코드가 작동함.
절차지향
함수를 통해 프로그램을 만드는 방식 자바나 코틀린 같은 객체지향적 언어를 사용한다고 해도 함수 위주의 사고방식으로 작성한다면 절차지향적 패러다임을 통해 개발한다고 해야한다. 절차 지향은 함수에 책임을 부여할 수 있다. 하지만 상속, 다형성과 같이 객체 위주의 코드를 작성하는데 문제가 있다.
중복 제거: 로직 중복이 제거되었다. 같은 로직이 필요하면 해당 메서드를 여러번 호출하면 된다.
변경 영향 범위: 기능을 수정할 때 해당 메서드 내부만 변경하면 된다.
메서드 이름 추가: 메서드 이름을 통해 코드를 더 쉽게 이해할 수 있다.
모듈화: 쉽게 이야기해서 레고 블럭을 생각하면 된다. 필요한 블럭을 가져다 꼽아서 사용할 수 있다. 여기서는 음악 플레이어의 기능이 필요하면 해당 기능을 메서드 호출 만으로 손쉽게 사용할 수 있다. 이제 음악 플레이어와 관련된 메서드를 조립해서 프로그램을 작성할 수 있다.
객체지향
구현과 역할을 분리 내가 역할을 수행할 때 어떤 객체인지 상관하지 않아도 된다. 확장에 유연해짐 interface, 상속 등 - 유연하고 확장 가능한 설계가 가능해진다. 데이터와 그 데이터에 대한 행동(메서드)가 하나의 객체 안에 함께 포함되어있음. (물론 c언어의 경우 구조체를 사용하면 구현할 수는 있다, 하지만 interface, 상속 등 유연한 설계 불가능)
캡슐화 : 속성과 기능을 하나로 묶어서 필요한 기능을 메서드를 통해 외부에 제공하는 것을 캡슐화라고 한다.
클래스는 속성(데이터, 멤버 변수)과 기능(메서드)를 정의할 수 있다.
객체는 자신의 메서드를 통해 자신의 멤버 변수에 접근할 수 있다.
객체의 메서드 내부에서 접근하는 멤버 변수는 객체 자신의 멤버 변수이다.

자바 고급 3편에서의 추가 개념 위랑 상충되는 거 같아 의문

Last updated