1. 절차지향 프로그래밍
- 실행하고자 하는 절차를 정하고 이 절차대로 프로그래밍하는 방법
- 개체를 순차적으로 처리하여 프로그램 전체가 유기적으로 연결되어야 한다
1) 장점
- 절차지향언어의 구조는 컴퓨터의 처리구조와 유사하므로 실행 속도가 빠르다
2) 단점
- 모든 프로그래밍이란 순차적으로 실행되어야 하며, 한군데에서 오류가 발생시 찾기도 어렵고 서로
유기적으로 연결되어 있기 때문에 부분 오류가 전체 수정으로 이루어질 수 있다
- 코드의 순서가 있어야하기 때문에 융통성이 부족하여 생산성이 떨어짐
2. 객체지향 프로그래밍 (OOP)
- 연관되어 있는 변수와 메서드를 하나의 그룹으로 묶어 클래스(개념)를 구현하고 이들 사이의 상호 작용을
프로그램으로 나타낸 것
- 프로그래밍에 필요한 데이터의 상태와 행위를 객체로 만들어 객체간의 상호작용을 통해 비지니스 로직을 구성하는것
1) 장점
- 객체를 이용하여(클래스) 코드 재사용이 용이하고 상속을 통한 확장이 가능
- 클래스단위로 모듈화, 작게작게 나눌 수 있기 때문에 유지보수에도 좋고 분업에도 좋다
2) 단점
- 객체가 많아질수록 용량이 커질 수 있다
- 객체를 올바르게 설계하는데 많은 노력과 시간이 필요
3) 특징
(1) 상속
- 자식클래스가 부모클래스의 기능과 상태를 물려받아 그대로 사용하거나 필요한 부분만 수정할 수 있도록 하는 것
(2) 추상화
- 불필요한 부분을 지우고 필요한 핵심만을 정의해 두는 것
- 사물을 추상화한 후 필요한 객체에서 상속받아 필요에 맞게 기능을 재정의하여 사용할 수 있도록함
(3) 캡슐화
- 비슷한 속성과 메소드들을 하나의 클래스로 모은것
- 외부 접근으로부터 데이터를 지킴
(4) 다형성
- 같은 이름을 가지더라도 다른 기능을 구현할 수 있는 것
- 오버로딩 과 오버라이딩, 인터페이스와 연관이 있다
4) Spring 에서의 OOP
- Spring 에서 관리하는 Bean 을 이용해 객체에 의존성을 주입하는 것이 핵심
- 객체는 주입받은 객체를 직접관리하지 않아도 되고 어떻게 구현되어 있는지 알 필요없이 어떤 기능이
있는지만 알면 되기 때문
5) 객체지향 프로그래밍 설계원칙(SOLID)
(1) 단일 책임원칙
- 모든 클래스는 각각 하나의 책임만 가져야 한다
(2) 개방 폐쇄 원칙
- 확장에 열려있고 수정에는 닫혀있는 기존의 코드를 변경하지 않으면서 기능을 추가 할 수 있도록
설계가 되어야 한다
(3) 리스코프치환 원칙
- 자식 클래스는 언제나 자신의 부모 클래스를 대체할 수 있다
(4) 인터페이스 분리 원칙
- 한 클래스는 자신이 사용하지 않는 인터페이스는 구현하지 말아야 한다
(5) 의존관계 역전 원칙
- 의존 관계를 맺을 때 변화하기 쉬운 것 또는 자주 변화하는 것보다는 변화하기 어려운 것,
거의 변화가 없는 것에 의존하라는 것
3. 함수형 프로그래밍
- 주어진 문제를 작은 문제로 나눈 후 이 작은 문제를 순수 함수로 만들어 순수함수를 조합하여 프로그램을
만드는 선언형 프로그래밍 기법
- 어떻게 하는지보다 무엇을 할 것인지를 중심으로 설명하는 프로그래밍 방식
- 들어오는 input 에 대해 원하는 결과값이 무엇(What)이다 라고 정의한 순수 함수들을 상태를 변화시키지 않고
함수의 응용과 조합으로 프로그래밍을 유도해 Side-Effect(예상하지 못한 원치않는 결과)를 최대한 줄여서
신뢰성이 있는 순수함수를 만드는 것
1) 장점
- 사용하는 모든 데이터가 변경 불가능하고 함수는 부수효과를 가지지 않기 때문에 공유데이터에 대한
동시성 접근 문제에 대해 빅적 자유로울 수 있다
2) 단점
- 모든 설계를 순수 함수 단위로 쪼개어 유기적으로 설계해야 하기 때문에 로직이 커질수록 생각해야 하는
부분이 많아지며, 잘못된 설계는 효율의 감소로 이어짐
4. Call By Value
- 기본 자료형 변수를 복사하는 경우에 발생하며 기본 자료형 변수는 저장하고 있는 값을 그 값 자체로 해석하기에
두개의 변수는 서로에게 영향을 주지 않음
1) 장점
- 복사하여 처리하기 때문에 안전하고 원래의 값이 보존됨
2) 단점
- 복사를 하기 때문에 메모리 사용량이 늘어남
5. Call by reference
- 객체를 저장하고 있는 객체 참조 변수를 복사하는 경우에 발생하며, 참조 자료형 변수는 저장하고 있는 값을
주소로 해석하기에 두개의 변수가 같은 객체를 참조하게 됨
1) 장점
- 복사하지 않고 직접 참조를 하기에 빠르다
2) 단점
- 직접 참조를 하기에 원래 값이 영향을 받는다
6. Java 의 호출방식
- 함수에 전달되는 인자의 데이터 타입에 따라서 (원시자료형 / 참조자료형) 함수 호출 방식이 달라짐
1) 원시 자료형
- Call By Value 로 동작 (int, short, long, float, double, char, boolean)
2) 참조 자료형
- Call by reference 로 동작 (Array, Class, Instance)
'CS 전공지식' 카테고리의 다른 글
24.02.14 웹, 네트워크 관련 (0) | 2024.02.14 |
---|---|
24.02.13 Java 관련 4 (1) | 2024.02.13 |
24.02.07 Java 관련 2 (1) | 2024.02.07 |
24.02.06 Java 관련 1 (1) | 2024.02.06 |
24.02.02 Java 의 Collection Framework 란? (1) | 2024.02.02 |