///////
Search

git, 생성자, interface_이연재

1. IntelliJ에서 git push하기

1. IntelliJ에서 git push하기

1.
github에 Repository만들기
2.
IntelliJ에 자바 프로젝트 생성 후 코드 작성
3.
IntelliJ 상단 VCS탭에 Create Git Repository 클릭
4.
왼쪽 프로젝트이름이 빨갛게 변했는지 확인
5.
왼쪽 탭에 Commit 클릭
6.
커밋메세지 작성후 commit 클릭
7.
IntelliJ의 Git 탭에 Manage Remotes클릭
8.
+버튼 클릭해서 github Repository 주소 넣어서 추가하기
9.
git 탭에 push 클릭

2. 메인 branches에 Repository 만들기

1.
1번의 1)~8)까지 그대로하고 오른쪽 밑에 master 브런치 클릭 후 main브런치 새로 생성
2.
push클릭

3. IntelliJ에 ignore파일 생성하는 방법

IntelliJ에 ignore파일 생성 플러그인 설치후 생성
소스트리에서 생성
파일 커밋해서 빨간색으로 변했을때 파일 우클릭 > git > add to ignore

2. Class

1. java에서 할수 있는 실수

public class Hello { public void plus(int first, int second){ System.out.println(first + second); } public static void main(String[] args){ plus(10, 20); //오류 } }
Plain Text
복사
push가 안되는 이유: 객체를 생성하지 않았기 때문
Hello hello = new Hello(); 코드를 추가하고 실행하면 오류가 나지 않는다.
클래스를 만들었을때 보통 main클래스를 따로 만들어서 사용함

2. 생성자를 사용하는 이유

문제(1)
Calculator클래스를 만들고 plus,minus,multiple,divide 4개의 메소드를 만들어보세요
각 메소드 기능은 + - * /이고 파라메터는 int a, int b 를 받습니다.
Calculator클래스는 psvm만들지 않습니다.
CalculatorMain 클래스에서 실행 해보세요.
실행은 CalculatorMain에서 합니다.
public class Calculator { public void plus(double num1, double num2){ System.out.println(num1+num2); } public void minus(double num1, double num2){ System.out.println(num1-num2); } public void multiple(double num1, double num2){ System.out.println(num1*num2); } public void divide(double num1, double num2){ System.out.println(num1/num2); } }
Plain Text
복사
public class CalculatorMain { public static void main(String[] args) { Calculator cal = new Calculator(); cal.plus(10,15); cal.minus(10,15); cal.multiple(10,15); cal.divide(10,15); } }
Plain Text
복사
문제(2)
위 Calculator(1)의 예제를 생성자를 사용해 작성하시오.
public class Calculator { private int a; private int b; //생성자 추가 할때: alt + insert public Calculator(int a, int b){ this.a = a; this.b = b; } public void plus(){ System.out.println(a+b); } public void minus(){ System.out.println(a-b); } public void multiple(){ System.out.println(a*b); } public void divide(){ System.out.println((float)a/b); } }
Plain Text
복사
public class CalculatorMain { public static void main(String[] args) { Calculator cal = new Calculator(10, 20); cal.plus(); cal.minus(); cal.multiple(); cal.divide(); } }
Plain Text
복사
위 문제1과 문제2를 비교해보면 문제2의 코드는 변수를 private으로 따로 지정하고 생성자를 만들었다. Main 메소드를 보면 매개변수가 문제 1에서는 매소드마다 들어가지만 문제 2에서는 객체를 생성할때 딱 한번만 들어가는 것을 볼 수 있다.
생성자를 작성하는 이유: 같은 변수가 반복적으로 들어가는 경우에 생성자를 작성하게 되면 한번만 작성해도 되기 때문이다.

3. RandomCalculator 만들기

문제(1)
RandomCalculator를 만들어 보세요
메소드: plus, minus, multiple, divide
각 메소드는 parameter를 int형 하나만 받습니다.
ex) a + random한 정수 숫자randomNumber는 0~9사이의 정수
divide의 경우 0으로 나누면 Error가 납니다. <-에러처리하기
랜덤한 숫자가 0으로 생성이 되면 “랜덤하게 생성된 숫자가 0입니다.”를 출력하기
public class RandomCalculator { private int randomNumber = (int)(Math.random()*9); private int a; public RandomCalculator(int a){ this.a = a; } public void plus(){ System.out.println(a + randomNumber); } public void minus(){ System.out.println(a - randomNumber); } public void multiple(){ System.out.println(a * randomNumber); } public void divide(){ if(randomNumber != 0){ System.out.println((float) a / randomNumber); }else{ System.out.println("0으로 나누면 Error가 납니다."); } System.out.printf("랜덤한 숫자는 %d 입니다", randomNumber); } }
Plain Text
복사
public class RandomCalculatorMain { public static void main(String[] args) { RandomCalculator randomcalculator = new RandomCalculator(10); randomcalculator.plus(); randomcalculator.minus(); randomcalculator.multiple(); randomcalculator.divide(); } }
Plain Text
복사
문제(2)
randomNumber생성하는 로직은 interface를 이용해 DI하기
public interface NumberCreator { //그냥 숫자를 넘겨주는 인터페이스 int create(int num); }
Plain Text
복사
public class RandomNumberGenerator implements NumberCreator{ @Override public int create(int num) { return num; } }
Plain Text
복사
public class Calculator { NumberCreator numberCreator; private int baseNum; public Calculator(NumberCreator numberCreator) { this.numberCreator = numberCreator; this.baseNum = 10; } public Calculator(NumberCreator numberCreator, int baseNum) { this.numberCreator = numberCreator; this.baseNum = baseNum; } public void plus(int num){ System.out.println(num + numberCreator.create(baseNum)); } }
Plain Text
복사
public class Main { public static void main(String[] args) { Calculator calculator = new Calculator(new RandomNumberGenerator()); calculator.plus(10); } }
Plain Text
복사

4. 자바의 원칙들(SOLID)

OOP(Object Oriented Programming) <-> 함수형(Functional) 프로그래밍:객체 지향 프로그래밍, class = object, 모든것을 클래스 기반으로 만듦
DI(Dependency Injection): 의존성 역전:DI한다 -> constructor를 이용해 interface 구현체를 넘겨서 초기화 시킨다
Pojo(Plain Old Java Object):extends -> EJB
IoC(Inversion of Control):DI랑 비슷

3. Java Collection

1. collection 이란?

컬렉션 -> 수집
verctor는 현재 잘 사용하지 않는다.

2. List

문제(1)
사람 이름이 들어있는 list를 return 하는 method 만들기
package collection; import java.util.ArrayList; import java.util.List; public class Names { private List<String> students = new ArrayList<>(); public List<String> names(){ this.students.add("권하준"); this.students.add("조성윤"); this.students.add("안예은"); this.students.add("남우빈"); this.students.add("최경민"); this.students.add("안준휘"); this.students.add("하채민"); this.students.add("허도한"); this.students.add("배태훈"); this.students.add("정해성"); this.students.add("하찬희"); this.students.add("박도아"); this.students.add("유경준"); this.students.add("고다니"); this.students.add("하이안"); this.students.add("고유호"); this.students.add("전민찬"); this.students.add("배강"); this.students.add("유서이"); this.students.add("황도빈"); this.students.add("강규진"); this.students.add("임예린"); this.students.add("양예온"); this.students.add("곽윤재"); this.students.add("한단"); this.students.add("박강현"); this.students.add("윤성민"); this.students.add("박재윤"); this.students.add("서현준"); this.students.add("노유주"); this.students.add("전율"); this.students.add("노아린"); this.students.add("권아윤"); this.students.add("송태서"); this.students.add("정라온"); this.students.add("서서한"); this.students.add("문주호"); this.students.add("오세아"); this.students.add("이호영"); this.students.add("손윤아"); this.students.add("이동우"); this.students.add("남혜준"); this.students.add("황솔"); this.students.add("권은재"); this.students.add("곽준휘"); this.students.add("양시현"); this.students.add("김지훈"); this.students.add("신서아"); this.students.add("노도형"); this.students.add("허선"); this.students.add("노지아"); this.students.add("신아인"); this.students.add("양시은"); this.students.add("노석현"); this.students.add("손강준"); this.students.add("백주안"); this.students.add("강단우"); this.students.add("오나은"); this.students.add("오한겸"); this.students.add("백예준"); this.students.add("노은우"); this.students.add("손도헌"); this.students.add("전진우"); this.students.add("안주하"); this.students.add("백다은"); this.students.add("유민기"); this.students.add("노휘"); this.students.add("박채원"); this.students.add("강다겸"); this.students.add("신여준"); this.students.add("허은유"); this.students.add("심서후"); this.students.add("유준이"); this.students.add("전민승"); this.students.add("강예은"); this.students.add("허로이"); this.students.add("유유진"); this.students.add("권건하"); this.students.add("하도이"); this.students.add("노도원"); this.students.add("문하성"); this.students.add("오시후"); this.students.add("이로윤"); this.students.add("노지후"); this.students.add("권채이"); this.students.add("전담"); this.students.add("하태율"); this.students.add("노다율"); this.students.add("장우솔"); this.students.add("황하준"); this.students.add("조담호"); this.students.add("백민우"); this.students.add("김시진"); this.students.add("박유담"); this.students.add("이해성"); this.students.add("전현성"); this.students.add("권유겸"); this.students.add("강서현"); this.students.add("문찬율"); this.students.add("한도현"); return this.students; } }
Plain Text
복사
package collection; import java.util.ArrayList; import java.util.List; public class LikeLion2th { //이름이 들어있는 list를 return 하는 method private List<String> students = new ArrayList<>(); public LikeLion2th(){ Names names = new Names(); this.students = names.names(); } public List<String> getStudentList(){ return this.students; } }
Plain Text
복사
package collection; import java.util.List; public class ListPracticeMain { public static void main(String[] args) { LikeLion2th likeLion2th = new LikeLion2th(); List<String> students = likeLion2th.getStudentList(); for(String student : students){ System.out.println(student); } System.out.println(students.size()); } }
Plain Text
복사