- Java 응용 프로그램은 컴퓨터 아키텍쳐에 관계없이 모든 Java 가상 머신(JVM)에서 실행이 가능하다.
(플랫폼에 독립적)
- 바이트 코드(클래스 파일)로 컴파일 된다.
- 클래스기반 객체지향 프로그래밍이다.
- 광범위하게 응용프로그램에서 웹프로그램까지 사용되고 있다.
실세계의 현상을 컴퓨터상에 객체로 실현(모델화) 함으로써, 컴퓨터를 자연스러운 형태로 사용하여
다양한 문제를 해결하기 위한 프로그램 기법으로 여기에서 객체는 실체(데이터)와 그 실체와 관련되는
동작(절차, 방법, 기능)을 모두 포함한다.
기차역에서 승차권 발매를 예로 들면, 실체인 '손님'과 절차인 '승차권 주문'은 하나의 객체이고,
실체인 '역무원'과 절차인 '승차권 발매'도 하나의 객체이다.
장점
- 유지 보수가 용이하다
- 요구 사항의 변화에 쉽게 대처한다.
- 분석과 설계단계로 전이 과정이 쉽다.
- 대형 프로젝트에 적합하다.
단점
- 대형 시스템의 경우 상속구조나 객체간의 상호 작용이 너무 복잡해질 수 있다.
- 서브 시스템의 정의 방법이 제대로 정립되지 않았다.
특징(추상화, 캡슐화, 다형성, 상속)
1) 추상화(Abstraction)
추상화란 객체들이 가진 공통적인 데이터와 기능을 도출해 내는 과정으로 실 세계의 복잡한
문제를 정의하는데 가장 기본이 되는 방법이며, 객관적이고 일반적인 상위 단계로 표현한 것.
즉, 현실 세계의 사물을 데이터적인 측면과 기능적인 측면을 통해서 정의하는 것(데이터 추상화)
2) 캡슐화(Encapsulation)
캡슐화는 객체와 기능, 즉 데이터와 메소드 등을 위해 필요한 모든 자원을 프로그램 객체 내에
포함시키는 것을 말한다. 캡슐화를 통해 외부의 잘못된 사용을 막을 수 있으며, 내부 구조를
숨길 수 있도록 한다. 객체는 자신의 인터페이스들을 외부에 알림으로써, 객체가 자신의 기능을
어떻게 수행하는지에 대해 전혀 알지 못하더라도 인터페이스를 통해 그 객체의 기능을 사용할
수 있도록 한다.
[특징]
- 객체에 포함된 정보의 손상과 오용을 막을 수 있다.
- 객체 조작 방법이 바뀌어도 사용방법은 바뀌지 않는다.
- 데이터가 바뀌어도 다른 객체에 영향을 주지 않아 독립성이 유지된다.
- 처리된 결과만 사용하므로 객체의 이식성이 좋다.
- 객체를 부품화 할 수 있어 새로운 시스템의 구성에 부품처럼 사용할 수 있다.
3) 다형성(Polymorphsim)
연관성 있는 여러 기능을 하나의 이름(인터페이스)으로 사용할 수 있게 하는 성질을 말한다.
자바에서의 다형성은 오버라이딩(재정의 : overriding)을 통해 지원된다.
오버라이딩(Overriding)은 상위 클래스에서 정의된 행동에 대해 다시 재 정의하여 이름은
같아도 다른 행동을 하도록 할 수 있다.
4) 상속(Inheritance)
기존에 정의되어 있는 클래스의 데이터와 함수를 이어 받아 새로운 데이터나 함수를 추가할
수 있는 기능으로 코드의 재사용성(reusability) 향상 및 재정의(Overriding)가 가능하다.
이때 새로 생기는 클래스를 서브 클래스(sub class)라 하고 그 클래스에 기본이 되는 클래스를
슈퍼 클래스(super class)라 한다.
클래스란 어떤 특정 종류의 모든 객체(object)들에 대해 일반적으로 적용할 수 있는 멤버 변수와
메소드를 정의한 소프트웨어적인 설계도(blueprint) 또는 프로토타입(prototype)이라 할 수 있다.
즉, 실세계에 존재하는 객체들이 가질 수 있는 상태와 행동들에 대해 소프트웨어적으로
추상화(abstraction) 해 놓은 것이 클래스(class)이다.
Intellij 단축키 (0) | 2021.04.06 |
---|---|
Spring boot (0) | 2021.04.06 |
도메인 관련 (0) | 2021.04.01 |
ORM(JPA), SQL Mapper(Mybatis), JDBC (0) | 2021.03.18 |
블록체인(BlockChain) (0) | 2021.03.14 |