본문 바로가기

스파르타코딩클럽(내일배움캠프)

스파르타 코딩 클럽 내일배움캠프 5주 5일

728x90
 
1. 스트림을 활용해 1~100을 담은 리스트의 홀수 총합을 구하세요.
 
import java.util.*;
import java.util.stream.IntStream;
import java.util.stream.Stream;
public class Main {
    public static void main(String[] args)
    {
        List<Integer> list = new ArrayList<Integer>();
        for(int i=1;i<=100;i++)
        {
            list.add(i);
        }

        Stream<Integer> stream = list.stream(); // 입력 1번째 방법
        //Stream<Integer> stream = IntStream.range(1,100).boxed(); // 입력 2번째 방법
        Integer sum = stream.filter(v ->(v%2==1)).reduce(0,Integer::sum); // 필터하는 방법
        System.out.println(sum);
    }
}
 

다양한 스트림 합계 관련 링크 :https://kapentaz.github.io/java/Java8-stream-sum-%EA%B5%AC%ED%95%98%EA%B8%B0/#

 
2. 자동차를 클래스로 설계해보세요.
필드는 최대 출력속도. 연료의 타입(휘발유, 경유). 연료의 양. 현재 속도
 
public class Car {
    //최대 출력속도. 연료의 타입(휘발유, 경유). 연료의 양. 현재 속도
    private int speedMax = 0;
    private int amountFuel =0;
    private int speedCurrent =0;
    private boolean isGasoline =false;

    public int setSpeedMax(int speedMax)
    {
        return this.speedMax = speedMax;
    }
    public int setAmountFuel(int amountFuel)
    {
        return this.amountFuel = amountFuel;
    }
    public int setSpeedCurrent(int speedCurrent)
    {
        return this.speedCurrent = speedCurrent;
    }

    public boolean setGasoline(boolean isGasoline)
    {
        return this.isGasoline = isGasoline;
    }

}
 
 
 
3. 자동차의 기능을 인터페이스로 설계합니다
기능은 시동 on/off. 가속. 브레이크.
 
Main.java
public class Main {
    public static void main(String[] args)
    {
        Car c = new Car();
        c.on();
        c.accelerate();
        c.getSpeedCurrent();
    }
}

Car.java

import com.sun.xml.internal.ws.api.model.wsdl.WSDLOutput;

public class Car implements movingFunction{
    //최대 출력속도. 연료의 타입(휘발유, 경유). 연료의 양. 현재 속도
    private final int speedMax = 300;
    private int amountFuel =0;
    private int speedCurrent =0;
    private boolean isGasoline =false;
    public int setAmountFuel(int amountFuel)
    {
        return this.amountFuel = amountFuel;
    }
    public int setSpeedCurrent(int speedCurrent)
    {
        return this.speedCurrent = speedCurrent;
    }

    public boolean setGasoline(boolean isGasoline)
    {
        return this.isGasoline = isGasoline;
    }

    public int getSpeedCurrent()
    {
        System.out.println(this.speedCurrent);
        return 0;
    }
    public void on()
    {
        this.speedCurrent =10;
    }
    public void off()
    {
        this.speedCurrent =0;
    }
    public void breaking()
    {
        this.speedCurrent -=10;
    }

    public void accelerate()
    {
        this.speedCurrent +=10;
    }
}
movingFunction.java
public interface movingFunction {
    //시동 on/off. 가속. 브레이크.
    public void on();
    public void off();

    public void breaking();

    public void accelerate();

    public int getSpeedCurrent();
}
 
4. 객체지향 4대 특징에서 캡슐화를 설명해주세요.
객체를 캡슐로 쌓고있어서 안에 무슨일이 일어나는지 외부에선 객체외부에선 볼수 없다. 그래서 캡슐화할 클래스안에 변수들도 외부에서 접근을 못하도록 private를 사용해야한다.
 
5. 객체지향 4대 특징에서 다형성을 설명해주세요.
다형성 말그대로 다양한 형태로 정의될수 있어야한다 입니다. 대표적인 기능은 abstract와 interface입니다. abstract는 is a 관계이고, interface는 has a 관계입니다. abstract는 is a관계 이기 때문에 자식이 부모를 대체되어야 하기 때문에, 유연성이 떨어져서 interface를 많이 사용합니다. 구현 부분에서는 overiding이 대표적인 다형성이라고 말할수 있습니다.
728x90