IT/JAVA

    [우테캠pro] 프리코스 1주차 - 자바 코딩 컨벤션

    [우테캠pro] 프리코스 1주차 - 자바 코딩 컨벤션

    코딩 컨벤션이란? 💡 코드의 가독성을 높이고 작성한 코드를 효율적으로 유지 보수하기 위한 공통 규칙을 의미한다. 협업을 할때 다른 사람이 작성한 코드도 나와 같은 스타일이라면 코드를 읽고 수정하는데 드는 비용이 감소합니다. 팀 작업을 한다면 처음으로 익히는 것이 컨벤션이지 않을까 싶습니다. 프리코스에서도 처음으로 주어지는 과제에서 코딩 컨벤션, 커밋 메세지 일관성을 맞추는 것을 요구하고 있습니다. 코딩 컨벤션 기준 프리코스 숫자야구 게임에서는 네이버 캠퍼스 핵데이 코딩 컨벤션을 기준으로 합니다 주요 내용을 보면 다음과 같습니다. 새줄 문자는 LF 파일의 마지막에는 새줄 식별자에는 영문/숫자/언더스코어만 허용 한국어 발음대로의 표기 금지 클래스 이름에 명사 사용 인터페이스 이름에 명사/형용사 사용 메서드 ..

    [우테캠pro] 프리코스 1주차 - 숫자야구 리뷰

    [우테캠pro] 프리코스 1주차 - 숫자야구 리뷰

    넥스트스텝 우아한테크캠프Pro 5기 프리코스 과정을 진행하며 정리한 게시글입니다. TDD TEST CODE : 테스트 코드 PRODUCTION CODE : 실제 동작하는 코드 TDD란 TFD(Test First Development) + 리팩토링 분석, 설계 기술이기도 하다 TDD를 잘하려면 요구사항 분석 → Todo List가 잘 정리 TDD 사이클 실패하는 테스트를 구현 테스트가 성공하도록 프로덕션 코드 구현 리팩토링으로 프로덕션 코드, 테스트 코드 개선 반복 TDD 원칙 실패하는 단위테스트를 작성할 때까지 프로덕션 코드를 작성하지 않는다 컴파일은 실패하지 않으면서 실행이 실패하는 정도로만 단위 테스트를 작성한다. 현재 실패하는 테스트를 통과할 정도로만 실제 코드를 작성한다. 어떻게 시작해야 할까? ..

    [우테캠pro] 프리코스 1주차 - 학습테스트

    1. String 클래스에 대한 학습 테스트 1-1 요구사항1 "1,2"을 ,로 split 했을 때 1과 2로 잘 분리되는지 확인하는 학습 테스트를 구현한다. "1"을 ,로 split 했을 때 1만을 포함하는 배열이 반환되는지에 대한 학습 테스트를 구현한다. 힌트 배열로 반환하는 값의 경우 assertj의 contains()를 활용해 반환 값이 맞는지 검증한다. 배열로 반환하는 값의 경우 assertj의 containsExactly()를 활용해 반환 값이 맞는지 검증한다. 테스트 @Test public void splitTest(){ // given String target_1 = "1,2"; String target_2 = "1"; // when String[] result_1 = target_1.sp..

    [JAVA]추상클래스, 인터페이스

    추상클래스 추상클래스 💡 추상 메서드를 하나라도 가지고 있는 클래스 abstract class class_name{ } 객체 생성에서 사용 할 수 없음 왜 만드나? 자식클래스에 어떤 메소드를 만들어야하는지 예시를 들어줌 상속받는 클래스에서 오버라이딩을 통해서 내용을 만들어줌 추상메서드 💡 선언부만 있고 구현부는 없는 메서드 abstract void method_name( ); package f_oop2; public abstract class Animal { // 추상 클래스 void run(){ System.out.println("달려간다~"); } abstract void sound(); // 추상메서드 } class Dog extends Animal{ @Override void sound(){ Sy..

    [JAVA] 상속

    [JAVA] 상속

    상속 💡 기존의 클래스를 물려받아 새로운 클래스를 만드는 것이다. 자식클래스명 extends 부모클래스명 { } 부모클래스의 생성자와 초기화블럭을 제외한 모든 멤버를 물려받는다 하나의 클래스만 상속 받을수 있다. 상속받지 않는 모든 클래스는 Object 클래스를 상속받는다 자식 클래스는 부모클래스의 멤버 외의 새로운 멤버를 가질 수 있으므로 자식클래스는 부모클래스보다 크거나 같다 두개 이상의 클래스를 만드는 데 공통된 멤버가 있는 경우 부모클래스로 만든다 package f_oop2; public class SampleParent { String var; // 변수 { // 초기화블럭 var = "초기화블럭은 물려주지 않는다"; } public SampleParent() { // 생성자 var = "생성자..

    [JAVA] OOP, class

    [JAVA] OOP, class

    💡 객체지향 프로그래밍 Object Oriented Programing 프로그램을 단순히 코드의 연속으로 보는것이 아니라 객체간의 상호 작용으로 보는것 코드의 재사용성이 높고 유지보수가 용이하다. 사용자 정의 데이터 타입(class) 데이터의 최종 진화 형태 (변수 → 배열 → 클래스) 서로 다른 타입의 데이터를 묶어서 사용하는 것이다. 변수와 메서드로 구성할 수 있다. 클래스를 다른 곳에서 소환할때는 객체선언을 해주어야 한다 ex) Scanner scn = new Scanner(); SampleClass sc = new SampleClass(); 메소드 안에 변수 사용 (지역변수) 클래스 안에 메소드 밖에 변수 사용 (전역변수) 초기화 하지 않아도 기본값으로 초기화 됨* Student student; ..

    [JAVA] 예외처리

    3. 예외처리 에러 컴파일 에러, 논리적 에러, 런타임 에러 컴파일 에러 💡 컴파일 시에만 발생되는 에러(빨간줄) 논리적 에러 💡 실행은 되지만 의도와 다르게 동작하는 것 (버그) 런타임 에러 💡 실행시 발생되는 에러 런타임 에러 발생시 발생한 위치에서 프로그램이 비정상적으로 종료된다 에러 프로그램 코드에 의해 수습될 수 없는 심각한 오류(처리불가) 예외 프로그램 코드에 의해서 수습될 수 있는 다소 미약한 오류( 처리가능) 예외 💡 모든 예외는 Exception 클래스의 자식 클래스이다. RuntimeException 클래스와 그 자식들은 예외처리가 강제되지 않는다 [RuntimeException 클래스와 그 자식들을제외한] Exception 클래스의 자식들은 예외처리가 강제된다. ex) Thread, ..

    [JAVA] JVM ( java virtual machine )

    JVM(Java Virtual Machine) 💡 자바로 만들어진 프로그램이 실행되는 컴퓨터 안의 가상컴퓨터 운영체제 → JVM → 자바 프로그램 장점 : 운영체제에 상관없이 실행할수 있다 단점 : 속도가 느리다 JVM 메모리 구조 Method Area(메소드 영역) 💡 클래스 멤버(**static**)가 저장된다. 프로그램이 종료되었을때 삭제 Call Stack(호출 스택) 💡 현재 호출되어있는 메소드가 저장된다 Heap 💡 객체가 저장된다 객체가 더이상 참조되지 않을때 GarbageCollecter가 삭제한다 프로그램 실행시 STATIC 멤버가 저장된다 main(), classVar, classMethod() 가 저장됨 main()이 실행되어 CallStack에 저장됨 System 클래스의 out이 ..

    [JAVA] 다차원 배열

    배열안에 배열이 있는 형태이다 2차원 배열 int[ ][ ] array2 = new int[2][3]; 배열안에 배열이 들어있는 형태 int[][] arr2 ; // 2차원배열 int[][][] arr3; // 3차원배열 int arr4[][] = new int[][]{{1,2,3},{4,5,6}}; //2칸짜리 배열각칸에 3칸짜리배열넣기 int[] arr5[] = { {1,2,3}, {4,5,6}, {7,8,9}}; //초기화하며 선언 // 가변배열 int[][] arr6 = new int[3][]; // 일부의 크기만 지정 가능, arr6[0] = new int[3]; arr6[1] = new int[5]; arr6[2] = new int[10]; 2차원배열 접근 2차원 인덱스까지 접근해서 사용한다 ..

    [JAVA]배열

    여러개의 값을 하나의 변수에 저장해서 사용하는것 참조형 타입. 인덱스로 값을 구분한다. 0 부터 시작 길이를 변 경할 수 없다. 자료형[] 이름; int[] (배열이름) = new int[배열 크기] int[] array; //배열의 주소를 저장할 공간이 만들어진다. array = new int[5]; //배열 초기화시 기본값이 저장된다. 배열 인덱스 각 배열의 값을 구분하기 위한 번호 array[0] // ⇒ 첫번째 인덱스 int[] array2 = {10, 20, 30, 40, 5.}; System.out.println(array[0]); //10 System.out.println(array[1]); //20 System.out.println(array[2]); //30 System.out.print..