💡 프로그래밍 언어
✅ 프로그래밍 언어
- 주어진 어떤 문제를 해결하기 위한, 인간과 컴퓨터 사이에서 의사소통을 가능케하는 인공적인 언어. 즉, 명령어들의 집합
✅ 종류
💡 Java
✅ 특징
- 운영체제(OS)에 독립적
JVM이 설치된 환경이라면 어떤 운영체제에서도 실행 가능
- 객체 지향 언어
상속, 캡슐화, 다형성의 장점이 있고,
코드의 재사용 및 유지보수에 용이함
- 자동 메모리 관리
Garbage Collector가 메모리 관리
- 네트워크, 분산처리, 멀티스레드
시스템과 관계없이 네트워크, 분산처리, 멀티스레드 구현을 위한 손쉬운 API 제공
✅ 자바 컴파일 과정
- *.java(개발자) > *.class(컴파일러, javac) > JVM
✅ JVM(Java Virtual Machine)
- 컴파일된 자바 바이트 코드를 실행시켜주는 소프트웨어
- 자바 프로그램은 JVM이 설치된 환경이라면 운영체제나 하드웨어에 종속되지 않고,
실행 가능(운영체제로 부터 독립적)
💡 객체지향 프로그래밍(OOP)
✅ 객체지향 프로그래밍(Object-Oriented programming)
- 기본 개념
실제 세계는 사물(객체)로 이루어져 있으며 발생하는 모든 사건들은 사물간의 상호작용
✅ 특징
- 코드의 재사용성 높음
새로운 코드를 작성할 때 기존의 코드를 이용하여 쉽게 작성
- 코드의 관리가 용이
코드의 관계를 이용해서 적은 노력으로 쉽게 코드를 변경 가능
- 신뢰성이 높은 프로그래밍 가능
제어자와 메소드를 이용해서 데이터를 보호하고 올바른 값을 유지하도록 하며,
코드의 중복을 제거하여 코드의 불일치로 인한 오작동을 방지
✅ 클래스와 객체
-
클래스
객체를 정의해 놓은 것, 객체를 생성하는데 사용
-
보통 많이하는 비유
클래스 - 붕어빵기계
객체 - 붕어빵
-
인스턴스(instance)
클래스로부터 객체를 만드는 과정을 클래스의 인스턴스화라고 하며,
어떤 클래스로부터 만들어진 객체를 그 클래스의 인스턴스(instance)라고 함
💡 메소드(Method)
✅ 메소드
- 정의
특정 작업을 수행하는 일련의 문장들을 하나로 묶은 것
- 기능
기본적으로는 수학의 함수와 유사하고, 어떤 값을 입력하면 이 값으로 작업을 수행하여 결과를 반환
✅ 메소드를 사용하는 이유
- 높은 재사용성
한번 만들어 놓은 메소드는 몇번이고 호출할 수 있으며 다른 프로그램에서도 사용이 가능
- 중복된 코드의 제거
같은 내용의 문장들이 여러 곳에 반복해서 나타난다면,
반복되는 문장들을 묶어서 하나의 메소드로 작성하여 대체가능
- 프로그램의 구조화
- 큰 규모의 프로그램에서는 문장들을 작업단위로 나눠서 여러개의 메소드에 담아 구조를 단순화 시켜야 함
- main 메소드는 프로그램의 전체 흐름이 한눈에 보일 정도로 단순하게 구조화 하는것을 지향
💡 생성자(constructor)
✅ 생성자
- 인스턴스가 생성될 때 호출되는 인스턴스 초기화 메소드
- 인스턴스 변수의 초기화 작업에 주로 사용되며 인스턴스 생성시에 실행되어야 할 작업을 위해 사용
- 생성자는 클래스이름과 같고, 리턴 값이 없음
✅ 기본생성자(default consturctor)
- 모든 클래스에는 하나 이상의 생성자가 정의되어 있어야 함
- JVM이 기본 생성자를 제공하여 생략 가능
(단, 클래스에 임의로 정의한 생성자가 없을 때)
✅ 클래스 내의 다른 생성자 호출 방법
- this() 키워드 사용
- 다른 생성자를 호출할 때는 반드시 첫 줄에서만 호출 가능. (아래 예제 참고)
class Car{
String color;
String gearType;
int door;
Car(){
this("white", "auto", 4);
}
Car(String color){
this(color, "auto", 4);
}
Car(String color, String gearType, int door){
this.color = color;
this.gearType = gearType;
this.door = door;
}
Car(Car c){
this.color = c.color;
this.gearType = c.gearType;
this.door = c.door;
}
}