자바 (JAVA)
-> 네트워크 상에서 쓸 수 있도록 미국의 Sun마이크로 시스템사가 개발한 객체지향 프로그래밍 언어
자바의 특징
- JVM(java virtual machine)설치하면 컴퓨터의 운영체제에 상관없이 작동 즉, 운영체제로 부터 독립적
- 기본 자료형을 제외한 모든 요소들이 객체로 표현
- 객체지향 개념의 특징인 캡슐화, 상속, 추상화, 다형성이 잘 적용된 언어
- GarbageCollector를 통한 자동적인 메모리 관리
- 멀티쓰레드(Muti-thread)를 지원
객체지향이란 (OOP : Object-Oriented Programming)
데이터를 객체로 취급하여 프로그램에 반영한 것
순차적으로 프로그램이 동작하는 기존의 것과 다르게 객체와 객체의 상호작용을 통해 프로그램이 동작하는 것
장점
- 코드의 재사용성 증가
- 코드의 변경이 용이
- 직관적인 코드 분석
- 개발속도 향상
- 상속을 통한 장점 극대화
객체지향언어의 4가지 특징
추상화 : 실제 세상을 프로그래밍으로 옮길 수 있게, 필요한 기능들만 가져와서 단순화
필요한 정보만 중심으로 간소화 하는 것을 의미
소프트웨어에서 구체적이고 개별적인 것이 아니라 "개념"이나 "표준"과 같은 추상화된 코드를 작성하여 재사용 성 을 높임
캡슐화 : 연관된 목적을 가지는 변수와 함수를 하나의 클래스로 묶어 외부에서 쉽게 접근하지 못하도록 은닉
추상화를 통해 객체를 정의 객체에 필요한 데이터나 기능을 책임이 있는 객체에 그룹화시켜주며 보안적인 기능에 도움을 줌, 들어있는 값을 노출하지 않음
상속 : 상위 클래스의 기능을 하위 클래스가 사용할 수 있는 개념
여러 객체에서 사용되는 기능을 하나의 클래스에로 분리해서 사용할 수 있도록 하기 위함 , 중복되는 코드의 재사용성을 위해서
다형성 : 같은 이름의 메서드가 클래스 혹은 객체에 따라 다르게 동작하도록 구현되는 것을 말함
객체(object)란?
객체지향에서 데이터(변수)와 그 데이터에 관련되는 함수(동작) 즉, 절차 방법, 기능을 모두 포함한 개념
같은 성질, 같은 구조의 형태를 가지는 객체는 등급으로 정의하고 등급에 속하는 객체는 그 등급의 인스턴스라고 한다.
접근제어자
멤버 또는 클래스에 사용되어 해당하는 멤버 또는 클래스를 외부에서 접근하지 못하도록 제한하여 데이터를 보호하기 위해 사용
순서는 public > protected > default > private 순으로 보다 많은 접근을 허용
public : 접근 제한이 없음
protected : 같은 패키지내에서, 다른 패키지의 자손클래스에서 접근 가능
defalt : 같은 패키지에서만 접근 가능
private : 같은 클래스내에서만 접근 가능
접근제어자 중 private 사용이유
-> 외부 클래스에서 직접적인 접근을 허용하지 않도록, 정보 은닉을 위해서 사용
오버로딩 & 오버라이딩
오버로딩
-> 하나의 클래스에 같은 이름의 메서드를 여러개 정의, 매개변수의 타입과 개수가 달라야하며 리턴타입과 접근제어자에 영향을 주지 않는다.
오버라이딩
-> 상속에서 나온 개념으로 상위클래스(부모클래스)의 매서드를 하위클래스(자식클래스)에서 재정의하여 사용하는 것
재정의, 동일한 인자를 가진 메서드를 다른 기능으로 고쳐쓰는 것, 덮어쓰기
오버로딩(Overloading)
- 같은 이름의 메소드를 여러개 정의
- 매개변수의 타입이 다르거나 개수가 달라야 함
- 리턴타입과 접근제어자는 영향을 주지 않음.
오버라이딩( Overriding)
- 상속에서 나온 개념
- 상위클래스(즉, 부모클래스)의 메서드를 하위클래스(자식클래스)에서 재정의
- 선언부가 같아야함(이름/매개변수/리턴타입)
- 접근제어자를 좁은 범위로 변경할 수 없음
- 조상클래스의 메서드보다 많은 수의 예외를 선언할 수 없음
클래스
객체를 정의하는 틀이며 변수와 메서드들로 구성되어 있다.
생성자
객체를 생성할 때 항상 실행되는 것으로, 객체를 초기화 해주기위해 맨 처음 실행되는 메소드
클래스/추상클래스/인터페이스의 차이
클래스가 설계도, 추상클래스는 미완성 설계도, 인터페이스는 밑그림
추상클래스 인터페이스의 차이점
추상클래스와 인터페이스는 구현이 되어있지 않은 추상메서드를 가지고 있다는 공통점이 있다.
그래서 상속받아 구현되어 있지 않은 추상메서드들을 재정의(오버라이딩)해서 사용해야한다.
추상클래스는 구현되어 있는 메서드도 가지고 있어서 생성자를 가지고 있음!
인터페이스는 모두 추상메서드로 구성되어있어서 생성자가 없음!
추상클래스는 사용하는 이유
추상클래스는 상속을 강제하기 위한 것, 즉 부모클래스 메서드의 시그니처만 정의하여 그 메서드의 실제 동작은
상속받은 자식클래스에게 위임하기 위해 사용한다.
일반클래스와 추상클래스의 차이점
추상클래스는 바디가 없어 객체 생성이 불가능하지만, 일반클래스는 객체 생성이 가능하다.
VO & DAO & DTO
DAO (DataAccessObject) : 비즈니스 메서드를 사용할 객체
DTO (DataTransferObject) : 계층간의 데이터 교환을 하기위한 객체로 DTO는 로직을 가지지 않은
순수한 데이터 객체(getter, setter)만을 가진 클래스 / 가변 -> VO와 유사
VO (ValueObject) : DB테이블의 구조를 자바로 변경한 것 테이블 컬럼명과 멤버변수명을 맞춰서 사용하며
readonly 특징(getter 기능만을 가짐)을 가진다 / 불변
컬렉션프레임워크
프레임워크 (Framework) : 뼈 , 틀
컬렉션 프레임워크란 다수의 데이터를 쉽고 효과적으로 처리할 수 있는 표준화된 방법을 제공하는 클래스의 집합
즉, 데이터를 저장하는 자료구조와 데이터를 처리하는 알고리즘을 구조화하여 클래스로 구현해 놓은 것
=> 이러한 컬렉션 프레임워크는 자바의 인터페이스를 사용하여 구현
List : 순서가 있는 데이터의 집합, 데이터의 중복을 허용
Set : 순서가 없는 데이터의 집합, 데이터의 중복을 불허
Map : (key/value) 쌍으로 이루어진 데이터의 집합, 순서가 없으며 key는 중복을 불허하지만 value는 중복을 허용
배열 vs 리스트
동일한 특성의 데이터들의 집합을 가르키는 자료구조 라는 부분에서 공통점
배열은 연속된 메모리 공간에 할당되어 인덱스 형식으로 순차 검색에 유리하나 변경에는 불리
메모리 재사용이 불가능, 데이터가 없더라도 초기에 할당받은 메모리를 차지함
리스트는 메모리가 연속적인 공간에 있지않고 노드를 사용하여 다음 노드를 가르키는 주소값을 가지고 있어서
검색에 불리하나 변경에 용이 / 구현이 상대적으로 복잡하며 참조를 위한 메모리가 필요
저장할 데이터의 수가 정해져있고 삽입, 삭제 작업이 적으면서 특정위치의 데이터를 조회하는 작업이 많으면 배열!
자장할 데이터의 수가 명확하지 않고 삽입, 삭제 작업이 많으면서 특정위치의 데이터를 조회하는 작업이 적으면 리스트!
상속
부모클래스에서 정의된 필드와 메서드를 자식 클래스가 물려받는 것
제네릭(Generic)
특정 객체만 추가될 수 있도록 하며, 컴파일 시 객체의 타입 안정성을 높이고 형변환의 번거로움을 덜어줌
자바에서 제네릭이란 데이터의 타입을 일반화 한다는 것을 의미,
제네릭은 클래스나 메소드에서 사용할 내부 데이터 타입을 컴파일 시에 미리 저장하는 방법
Stack & Queue
스택은 LIFO의 후입선축 구조, push()를 이용한 데이터의 입력, pop()를 이용한 데이터의 출력이 가능
함수의 호출과 복귀순서는 스택의 구조를 응용하여 관리한다.
큐는 FIFO의 선입선출 구조, enQueue()를 이용한 데이터입력, deQueue()를 이용한 데이터 출력
우선순위가 같은 작업예약, 선입선출이 필요한 대기열 로직에 사용된다.
MVC 모델
model, view, controller의 합성어로 소프트웨어 공학에서 사용되는 소프트웨어 디자인 패턴
model : 백그라운드에서 동작하는 로직을 처리
view : 사용자가 보게 될 결과 화면을 출력
controller : model과 view를 연결, 사용자의 입력처리와 흐름의 제어를 담당
사용자는 필요한 정보와 기능을 컨트롤러에게 요청을 보낸다
컨트롤러는 사용자의 요청을 수신, 그에 맞는 비즈니스 로직을 수행하는데 컨트롤러는 필요에 따라서
모델을 호출하여 데이터를 요청한다. 요청을 모두 처리하면 뷰를 통해서 사용자가 요청한 정보를 시각적으로 보여준다.
MVC 모델1 : view controller의 역할이 합쳐진 패턴으로
흔히 웹개발을 하면 jsp가 뷰 역할을 하는데 이때 jsp는 뷰와 컨트롤러 역할을 모두 담당한다.
하지만 뷰와 컨트롤러가 합쳐져 있기 때문에 jsp 파일에 java 코드와 css, html 코드가 섞여있어서 소스가 복잡해지고
가독성이 떨어지며 유지보수가 힘들다는 단점이 있으나 상대적으로 설계가 간단하여 개발속도가 빠르고 작은 프로젝트에 걸맞는 모델이다.
MVC 모델 2 : 기존 모델1의 유지보수가 힘들드는 단점을 보완하기 위해서 나온 모델도 JSP는 오로지 뷰의 역할만 하고
대신 컨트롤러 역할을 Servlet이 수행한다.
장점으로는 java코드와 html 코드가 확실히 분리되어 확장, 유지보수가 수월해진다.
하지만 설계가 어렵고 난이도가 향상된다는 단점을 가니고 있다.
'IT Study' 카테고리의 다른 글
[IT Study] HTTP와 HTTPS 란? (0) | 2022.12.05 |
---|---|
[IT Study] 프레임워크(Framework)란? (0) | 2022.11.06 |
[ 동영상 시청 ] Flex Layout (0) | 2022.07.24 |
[ 동영상 시청 ] CSS 방법론 (0) | 2022.07.24 |
[ 동영상 시청 ] 프론트엔드에서 Component란? (0) | 2022.07.24 |