객체지향 프로그래밍의 가장 기본적인 단위이자 시작점
필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고
객체들간의 유기적인 상호작용 로직을 구성하는 프로그래밍 방법
-데이터와 코드의 형태를 외부로부터 알수없게 하고, 데이터의 구조화 역할,기능을 하나의캡슐형태로만드는방법
방법
맴버변수앞에 접근 제어자 private을 붙인다
private은 자신의 클래스에서만 사용할수있는것을말함
-클래스들의 공통속성 변수/메소드
-추상클래스: 추상메서드를 포함하고있는 클래스
->class 앞에도 abstract를 붙여준다
class 자식클래스 extend 부모클래스{
//필드
//생성자
메서드
}
-다양한 형태로 표현이 가능한구조
ex)오버로딩, 오버라이딩이있음
오버로딩
-하나의 클래스 안에서 같은이름의 메서드를 여러개 정의하는것을 말함
void display(int num1) // 전달받은 num1을 그대로 출력함.
void display(int num1, int num2) // 전달받은 두 정수의 곱을 출력함.
출처: 생활코딩 예제
오버라이딩
-부모 클래스로부터 상속받은 메서드 내용을 재정의하는것
class SuperClass{
public void method (매개변수1,매개변수2)
}
class SubClass extends SuperClas(매개변수1, 매개변수2){ //이게오버라이딩
}
-하나의 클래스는 하나의 책임만 가져야한다
-확장에는 열려(Open) 있으나, 변경에는 닫혀(Closed)있어야 한다.
-프로그램의 객체는 프로그램의 정확성을 깨뜨리지 않으면서 하위 타입의 인스턴스로 바꿀 수 있어야 함
-몇개의 큰 인터페이스보다 작은 인터페이스가 많은 편이 바람직하다
-비즈니스와 관련된 부분이 세부 사항에는 의존하지 않는 설계원칙
필요한 데이터를 추상화시켜 상태와 행위를 가진 객체를 만들고
객체들간의 유기적인 상호작용 로직을 구성하는 프로그래밍 방법
ex) JAVA, C++, Python
-코드의 재활용성이 높음
-코딩이 절차지향보다 간편함
-디버깅이 쉽다.
-처리속도가 절차지향보다 느림
-설계에 많은 시간이 듬
물이 위에서 아래로 흐르듯이 순차적인 처리가 중요시되며 프로그램전체가 유기적으로 연결되도록 만드는
프로그래밍 기법
ex)대표적인 언어로 C언어가 있음
-컴퓨터의 처리구조와 유사하므로 실행속도가 빠르다
-유지보수가 어렵다
-실행순서가 정해져있으므로 순서가 바뀌면 같은 결과를 얻기가 어려움
-디버깅이 어려움
하나의 프로그래밍 패러다임으로 정의되는 일련의 코딩접근 방식
자료처리를 수학적 함수의 계산으로 취급하거고
상태와 가변데이터를 멀리하는 프로그래밍 패러다임을 의미함
여기서 프로그래밍 패러다임이란 프로그래머에게 프로그래밍의 관점을 갖게하고
결정하는 역할을 함.
프로그래밍패러다임은 두가지로 나뉨
명령형 프로그래밍
-절차적 프로그래밍
-객체지향 프로그래밍
선언형프로그래밍
-함수형 프로그래밍: 순수함수를 조합하고 프로그램을 만드는 방식
ex)클로저, 스칼라, 하스켈