본문 바로가기
MSA 기반 풀스택 개발자 교육/JAVA

JAVA 기초 (3/26)

by 황밤 2024. 3. 27.
728x90
반응형

1. Java

  • 자바란 프로그래밍언어 + 플랫폼(프로그램이 돌아가는 하드웨어 or 소프트웨어)
    • 자바 플랫폼은 Software only Platform
  • 자바 프로그래밍 언어는 high-level language (기계어보다 인간의 언어에 더 가깝다)
  • 작동 순서
    • .java 형식의 파일로 자바 코드 작성
    • javac 컴파일러를 통해 .class 로 소스 파일을 byte code로 컴파일
    • jvm이 가상환경을 통해서 하드웨어 베이스의 기계어로 전환을 함.
  1. 자바의 Object
    • 소프트웨어 bundle of related state and field
  2. 자바의 Class
    • A class is a blueprint or prototype from which objects are created.
    • 객체를 만들어내기 위한 틀
  3. 자바의 Inheritance
    • Inheritance provides a powerful and natural mechanism for organizing and structuring your software
    • 조직, 구조의 힘과 메커니즘을 제공하는 것
  4. 자바의 Interface
    • 객체가 세상과 맺은 계약 (어떻게 클래스가 나타날 것인지?)
  5. 자바의 Method
    • State의 할 일을 지정

객체 지향이란?

State 와 Behavior로 객체를 정의한다. 어떻게?

 

예를 들어 게임 내, 빌런과 주인공 캐릭터를 만들 때, 클래스를 어떻게 할 것인가? 빌런 클래스와 영웅 클래스로 객체를 생성할 것인가? 혹은 하나의 클래스로 다른 state를 통해 빌런과 주인공을 나눌 것인가?

 

자바는 개발 전, 이러한 고민이 필요하다.

 

각 객체의 관계를 고려해 클래스는 어떻게 생성을 할지? 메서드는? State는? 이 모든 것을 고려하는 것

 

“In object-oriented terms, we say that your bicycle is an instance of the class of objects known as bicycles.”

→ 객체가 세상과 자신의 state 와 method로 상호작용을 시작할 때 그것은 instance 이다.

 

소프트웨어에서는, 클래스를 통해 생성된 객체의 state, method가 실행되는 것 → instance

 

따라서 세상에 존재하는 혹은 존재할 객체를 먼저 만들어야 클래스가 만들어지고 그 객체들이 인스턴스로 이어질 수 있다.

class Bicycle {

    int cadence = 0;
    int speed = 0;
    int gear = 1;

    void changeCadence(int newValue) {
         cadence = newValue;
    }

    void changeGear(int newValue) {
         gear = newValue;
    }

    void speedUp(int increment) {
         speed = speed + increment;   
    }

    void applyBrakes(int decrement) {
         speed = speed - decrement;
    }

    void printStates() {
         System.out.println("cadence:" +
             cadence + " speed:" + 
             speed + " gear:" + gear);
    }
}

해당 코드를 작성하고 실행하면 ?

→ 에러 이유는?

자바는 main 메서드 정의가 필요하다. 해당 메서드를 바탕으로 인스턴스를 만들기 때문

 

해당 코드에서 객체들 (cadence, speed, gear)은 private이다.

그 및 메서드 들은 public

class BicycleDemo {
    public static void main(String[] args) {

        // Create two different 
        // Bicycle objects
        Bicycle bike1 = new Bicycle();
        Bicycle bike2 = new Bicycle();

        // Invoke methods on 
        // those objects
        bike1.changeCadence(50);
        bike1.speedUp(10);
        bike1.changeGear(2);
        bike1.printStates();

        bike2.changeCadence(50);
        bike2.speedUp(10);
        bike2.changeGear(2);
        bike2.changeCadence(40);
        bike2.speedUp(10);
        bike2.changeGear(3);
        bike2.printStates();
    }
}

해당 코드는 에러없이 가능하다.

→ 왜? main 메서드가 정의되어있기 때문.

C:\Users\KOSA>notepad BicycleDemo.java

C:\Users\KOSA>javac BicycleDemo.java

C:\Users\KOSA>javac BicycleDemo*
error: invalid flag: BicycleDemo.class
Usage: javac <options> <source files>
use --help for a list of possible options

C:\Users\KOSA>dir BicycleDemo*
 C 드라이브의 볼륨에는 이름이 없습니다.
 볼륨 일련 번호: 0CAE-0475

 C:\Users\KOSA 디렉터리

2024-03-26  오후 05:55               512 BicycleDemo.class
2024-03-26  오후 05:55               616 BicycleDemo.java
               2개 파일               1,128 바이트
               0개 디렉터리  174,814,445,568 바이트 남음

C:\Users\KOSA>java BicycleDemo
cadence:50 speed:10 gear:2
cadence:40 speed:20 gear:3
반응형
LIST

'MSA 기반 풀스택 개발자 교육 > JAVA' 카테고리의 다른 글

Solid  (0) 2024.04.08