내일배움캠프 7기

Spring 7기 9일(자바 클래스,메서드)

suuuki 2024. 10. 11. 21:27

자바 3주차

 

클래스(설계도)

 

객체

세상에 존재하는 물체를 뜻하며, 식별이 가능한 것을 의미

속성과 행위로 구성되어 있다

ex) 속성: 자동의 회사, 모델, 색상, 가격, 속도 == 자바의 필드

      행위: 가속, 브레이크, 기어변속, 조명, 경적등  ==자바의 메서드

 

 

-사용관계

-포함관계

-상속관계

 

캡슐화

필드(속성)과 메서드(행위)를 하나로 묶어 객체로 만든 후 실제 내부 구현 내용은 외부에서 알 수 없게 감추는 것을 의미

보안 때문에 중요하다

외부 객체에서는 캡슐화된 객체의 내부 구조를 알 수 없기 때문에 노출 시켜 준 필드 or 메서드를 통해 접근 가능

필드와 메서드를 캡슐화 하여 숨기는 이유= 외부 객체에서 해당 필드의 메서드를 잘못 사용하여 객체가 변화하지 않게 하기 위해

Java에서는 캠슐화된 객체의 필드와 메서드를 노출 시킬지 감출지 결정하기 위해 접근 제어자(public 등) 사용

 

상속

부모 객체는 가지고 있는 필드 메서드를 자식 객체에 물려줘서 이를 사용 할  수 있도록 함(overiding)

 

다형성(여러개의 형태로 표현)

객체가 연산을 수행할 때 하나의 행위에 대해 각 객체가 가지고 있는 고유한 특성에 따라 다른 여러 가지 형태로 재구성되는 것을 의미

 

추상화(구체적인것들을 모호하게 빼는것)

객체에서 공통된 부분들을 모아 상위 개념으로 새롭게 선언하는 것을 추상화

공통적이고 중요한 것들을 모아 객체를 모델링 합니다.

class 클래스 이름=> 객체를 만들기 위한 설계도

 

클래스 만들기 위한 4가지 STEP

1. 만들려고 하는 설계도를 선언

public class Car {

}

2. 객체가 가지고 있어야할 속성(필드)을 정의

public class Car {
    String company; //자동차 회사
    String model; //자동차 모델
    String color; //자동차 색
    double price; //자동차 가격
    double speed; //자동차 속도, km/h
    double gear; //기어상태(P, R, N, D)
    double lights; //자동차 조명의 상태

}

 

3. 객체가 생성하는 방식을 정의(생성자)

-constructor

4. 객체가 가지고 있어야 할 행위(메서드)를 정의

public class Car {
    //<필드영역>
    String company; //자동차 회사
    String model; //자동차 모델
    String color; //자동차 색
    double price; //자동차 가격
    double speed; //자동차 속도, km/h
    double gear; //기어상태(P, R, N, D)
    double lights; //자동차 조명의 상태

    //<생성자 영역>
    //생성자: 처음 객체가 생성될 때(instancegka) 어떤 로직을 수행해야 하며, 어떤 값을 필수로 들어와야 하는지 정의
    // =클래스의 이름과 동일하게 가져가야함
    public Car () {
        //logic
        //기본생성자: 생략가능
    }

    //<메서드 영역>
    //gasPedal , input: km/h, output: speed
    double gasPedal(double kmh) {
        speed = kmh;
        return speed;
    }
    //brakePedal, input: x, output: speed
    double brakePedal() {
        speed = 0;
        return speed;
    }
    //changeGear, input: gear(char type), output: gear
    char changeGear (char type) {
        gear = type;
        return gear;
    }
    //onOfflight, input: x, output: Lights(boolean)
    boolean onOffLight () {
        lights = !lights;
        return lights;
    }
    //horn, input:x, output: x
    void horn () {
        System.out.println("빵빵!");
    }
}

객체

객체는 크게 고유한 데이터, 상태데이터, 객체 데이터로 분류

객체의 필드= 데이터 저장

객체안에서 다뤄지는 변수와 같은 데이터= 필드

필드를 사용한다

= 필드의 값을 변경하거나 읽는 것을 의미

우리가 클래스 필드의 정의하여 선언한다해도 바로 사용x(인스턴스화 해야한다)

클래스는 설계도일뿐 실제로 필드 데이터 가지고 있는건 객체

객체를 생성한 후 필드를 사용할  수 있음


메서드

메서드 선언

리턴타입 메서드명(매개변수, ...) {
			 실행할 코드 작성
}

 

리턴타입

메서드가 실행된 후 호출을 한 곳으로 값을 반환할때 해당 값의 타입을 의미

double brakePedal() {...} // double 타입 반환
char changeGear(char type) {...} // char 타입 반환
boolean onOffLights() {...} // boolean 타입 반환
void horn() {...} // 반환할 값 없음

주의> 메서드에서 리턴 타입을 선언하여 반환할  값이 있다면 반드시 return 문으로 해당하는 리턴 타인의 반환값을 지정해야 함

반환 값이 없을 때는 리턴 타입에 void를 작성해야 한다

 

 

매개변수

매개변수는 메서드를 호출 할 떄 메서드로 전달하려는 값을 받기 위해 사용되는 변수

 

input=매개변수

output=메서드


<특강>

 

회사가 원하는 인재

 

1.문제해결능력이 있는 사람

문제 인식하는 능력 높은사람

성장 가능성이 무한한 사람

->로직과 코드에 대한 의도 생각하기

구현하는 기술, 스택에 목적과 근거 가지기

더 좋은 방법이 있는지 고민하기

 

2. 불편하지 않는 사람

다른 사람과 협업하여 좋은 결과를 이끌어 낼 수 있는 사람

->협업을 잘하려면

예쁘게 말하기

전달하고자 하는 바를 명확하게 말하기

데이터 또는 기술적인 근거를 바탕으로 소통하기