JAVA22 자바 플레이그라운드 with TDD, 클린코드(4) 4/21 문자열 계산기를 다시 만들었다. 값을 공유할 때 변수에 static붙이고 인스턴스 변수를 쓰지 않으면 메서드에 static 붙인다고 알고 있었다. 그래서 메서드에 static을 다 갖다 붙였다. 뭔가 잘못된 느낌이었다. static쓰니까 객체생성을 하나도 안했다. 나는 인스턴스 변수를 쓰지 않고 있었고 값들은 매개변수로 계속 넘기고 있었다. 이건 객체지향적인 코드가 아니었다. 객체지향 프로그래밍으로 유틸리티 클래스를 대체하자. | Mimul Tech log 유틸리티 클래스를 안써본 사람은 거의 없을겁니다. 유틸리티 클래스가 좋다, 나쁘다는 논쟁꺼리지만, 객체지향의 관점에서 볼때 그래도 생각해볼 꺼리가 된다고 생각해, OOP Alternative to Utility Cl www.mimul.com .. 2022. 6. 4. 자바 플레이그라운드 with TDD, 클린코드(3) 자바의 정석 1권의 조건문과 반복문, 배열, 객체지향 프로그래밍, 예외처리, java.lang패키지와 유용한 클래스까지 읽고 문자열계산기2, 자동차 경주 게임을 만들었다. 문자열 계산기는 테스트코드가 만들어져 있었고 기능 목록도 정리되어 있어서 테스트코드를 통과하도록 기능을 구현하다보니까 하나씩 만들어 갈 수 있었다. 사실 자동차 경주 게임은 그냥 기능 구현하는 것도 나는 어려웠다. 다른 사람들이 해놓은 것들을 참고하려고 검색하니까 우테코 합격하신분들의 코드를 볼 수 있었는데 생각하는 수준의 차이가 달라서 자괴감이 들었고 다른사람들 코드 읽는 것도 어려웠다. 테스트코드는 일단 냅두고 기능 구현만 해봤는데 책을 읽었어도 public private static은 내멋대로 붙이고 있고 객체생성은 어디서 해야할.. 2022. 4. 16. 자바 플레이그라운드 with TDD, 클린코드(2) 문자열 계산기와 숫자야구까지 1차로 만들었다. 예외는 고려하지 않고 여러 기준들을 생각 안하고 짠 코드들이라 고쳐야할 부분이 많지만 내 힘으로 테스트코드 작성하고 메서드 만들고 객체생성해서 프로그램하나 만들었다는게 뿌듯하다. class파일로만 생각했었는데 얘네들은 객체였다. 구현하면서 아직 자바문법도 제대로 모르고 있었다는 걸 깨달았다. 다시 자바의 정석으로 돌아갔다. static, 접근제어자, 생성자 등 강의를 따라칠땐 생각없이 쳤는데 제대로 모르고 있었다. 스프링을 할 때가 아니었다. 어려웠던게 기초도 안된 상태로 외우려고 해서 그랬나싶다. 당분간은 이거에 집중해야겠다. 만들면서 궁금해지니까 책 내용이 이제서야 눈에 들어왔다. 그래서 다시 정독하는 중이다. 다시 보니까 새롭다. 객체지향 사실과 오해,.. 2022. 4. 11. 자바 플레이그라운드 with TDD, 클린코드 다시 처음부터 시작한다는 마음으로 만들어 가면서 배우는 JAVA 플레이그라운드 구구단부터 다시 시작했다. 그리고 자바 플레이그라운드 with TDD, 클린코드 듣기전에 자바 문법을 제대로 알고있나 싶어 백준에서 단계별로 입출력 사칙연산, 조건문, 반복문, 1차원배열, 함수, 문자열까지 풀었다. 학습테스트 실습은 그래도 뭔가 된 것 같은 느낌인데 문자열 계산기부터는 뭘 해야 할지 막막했다. 그래서 냅다 구현만 해놓고 TDD가 뭔지 찾아봤다. TTD란 TDD란? 테스트 주도 개발 - 하나몬 TDD란 Test Driven Development의 약자로 '테스트 주도 개발'이라고 한다. hanamon.kr 테스트 주도 개발이라는 것만 알고있었지 실패하는 테스트 코드를 먼저 작성 테스트 코드를 성공시키기 위한 실.. 2022. 4. 7. 접근제어자와 static public : 접근 제한 없음 protected : 동일한 패키지 내에 존재하거나 상속받은 클래스 내 default : 동일한 패키지 내 private : 자기 자신의 클래스 내 static은 변수나 메소드에 자주 변하지 않는 일정한 값이나 설정 정보 static이 붙은 함수에서는 인스턴스 변수를 사용할 수 없다. https://wikidocs.net/232 07-02 접근제어자 (Access Modifier) 자바는 접근제어자를 사용하여 변수나 메소드의 사용 권한을 설정할 수 있다. [TOC] ## 접근 제어자 변수나 메소드의 사용 권한은 다음과 같은 접근 제어자를 사용 ... wikidocs.net https://wikidocs.net/228 07-03 정적(static) 변수와 메소드 이번에는 스.. 2022. 3. 30. 람다와 스트림 - 람다식: 함수(메서드)를 간단한 식으로 표현 new Object(){ int max(int a, int b){ return a>b? a:b; } } (a,b)->a>b?a:b 함수는 클래스에 독립적, 메서드(자바)는 클래스에 종속적 반환값이 있는 경우, 식이나 값만 적고 return문 생략가능 ;안붙임 매개변수 타입 생략가능 람다식은 익면 함수가 아니라 익명 객체이다. 람다식(익명 객체)을 다루기 위한 참조변수가 필요 참조변수 타입은? - 함수형 인터페이스: 단하나의 추상메서드만 선언된 인터페이스 interface MyFuntion{ public abstract int max(int a, int); } MyFunction f = new MyFunction(){ public int max(int a, .. 2022. 3. 10. 쓰레드 - 프로세스와 쓰레드 프로세스: 실행 중인 프로그램, 자원(메모리, cpu)과 쓰레드로 구성 쓰레드: 프로세스 내에서 실제 작업 수행 모든프로세스는 최소 하나의 쓰레드 프로세스:쓰레드=공장:일꾼 하나의 새로운 프로세스를 생성하는 것보다 하나의 새로운 쓰레드를 생성하는 것이 더적은 비용이 든다. - 멀티쓰레드 장단점 장점: 자원을 효율적, 응답성 향상, 코드간결 단점: 동기화주의, 교착상태주의, 각쓰레드 효율적으로 실행하도록 고려 - 쓰레드의 구현과 실행 Thread클래스 상속 run()구현 MyThread t = new MyThread(); t.start(); Runnable인터페이스 구현 (이게더 좋음) run()구현 Runnable r = new MyThread(); Thread t= new Thre.. 2022. 3. 10. 지네릭스, 열거형, 애너테이션 - 지네릭스: 컴파일시 타입체크를 해주는 기능 //tv객체만 저장할 수 있는 어레이리스트 ArrayList tvList = new ArrayList(); tvList.add(new Tv()); Tv t = tvList .get(0); 타입체크가 강화됨 객체의 타입안정성을 높이고 형변환의 번거로움을 줄여줌 - 타입변수: 클래스를 작성할 때 Object타입 대신 타입변수(E)를 선언해서 사용 - 객체 생성시, 타입변수대신 실제 타입을 지정(Tv) - 타입 변수 대신 실제 타입이 지정되면, 형변환 생략가능 - Box 지네릴클래스 T 타입변수 타입매개변수 Box 원시타입 - 지네릭타입과 다형성 참조변수와 생성자의 대입타입 일치 지네릭 클래스간 다형성 성립 매개변수의 다형성 성립 - Iterator:클래스 작성할.. 2022. 3. 9. 이전 1 2 3 다음