반응형 전체 글346 클래스, 객체 , 인스턴스 클래스란? 객체를 정의해 놓은 것. 객체의 설계도 또는 틀이다. 객체를 생성하는 데 사용하지만, 객체 그 자체는 아니다. 기능(메서드)과 속성(필드)을 가진다. 객체란? 우리가 주변에서 볼 수 있는 책상, 의자와 같은 사물과 개념, 논리 사랑 같은 무형의 개념도 객체다. 클래스의 설계 그대로 생성된 실체다. 우리가 소프트웨어에 구현할 대상이다. OOP의 관점에서 클래스의 타입으로 선언되었을 때 '객체'라고 부른다. 인스턴스란? 클래스로부터 객체를 만드는 과정을 클래스의 인스턴스화라고 한다. 어떤 클래스로부터 만들어진 객체를 그 클래스의 인스턴스라고 한다. 인스턴스란 클래스의 설계대로 메모리에 할당된 객체다. 객체를 소프트웨어에서 만들면 그것이 인스턴스다. OOP의 관점에서 객체가 메모리에 할당되어 실제 .. 개발/Java 2022. 2. 24. 2022.02.24 클린 코드 - 4장 주석 TIL (Today I LeTIL (Today I Learned) 2022.02.24 오늘 읽은 범위 4장. 주석 책에서 기억하고 싶은 내용을 써보세요. 프로그래밍 언어 자체가 표현력이 풍부하다면, 아니 우리가 프로그래밍 언어를 치필하게 사용해 의도를 표현할 능력을 가지고 있다면, 주석은 전혀 필요하지 않다. (p.68) 표현력이 풍부하고 깔끔하며 주석이 거의 없는 코드가, 복잡하고 어수선하며 주석이 많이 달린 코드보다 훨씬 좋다.(p.69) 오늘 읽은 소감은? 떠오르는 생각을 가볍게 적어보세요 본인이 이해하기에, 좋은 주석은 법적인 주석, 의도를 설명하는 주석, 결과를 경고하는 주석, TODO 주석, 대수롭지 않다고 여겨질 뭔가의 중요성을 강조하는 주석이 있다. 그외의 주석은 코드를 통해서 해결할 수 .. 독서/클린코드 2022. 2. 24. 변수와 리터럴 변수 변수란, 단 하나의 값을 저장할 수 있는 메모리 공간이다. 변수를 선언하면, 메모리의 빈 공간에 '변수타입'에 알맞은 크기의 저장공간이 확보되고, 앞으로 이 저장공간은 '변수이름'을 통해 활용할 수 있다. 변수를 선언하면 메모리는 여러 프로그램이 공유하는 자원이므로 다른 프로그램에 의해 저장된 알 수 없는 쓰레기 값이 남아있을 수도 있다. 그래서 변수는 사용되기 전 적절한 값으로 초기화 하는 것이 좋다. 지역변수는 사용하기 전에 초기화를 반드시 하지만 클래스 변수와 인스턴스 변수는 초기화를 생략할 수 있다. 변수를 선언할 때는 저장하려는 값의 특성을 고려하여 가장 알맞은 자료형을 변수의 타입으로 선택한다. 자료형은 크게 '기본형' 변수 8가지와 그 외 '참조형' 변수로 나눈다. 그러면 기본형과 참조.. 개발/Java 2022. 2. 24. 영속성 관리 2023. 02.07 09:30 복습 시작 JPA 기능 JPA가 제공하는 기능은 크게 두 가지가 있다. 엔티티와 테이블을 매핑하는 설계 부분 매핑한 엔티티를 실제 사용하는 부분 매핑한 엔티티를 엔티티 매니저를 통해 어떻게 사용하는지 알아보자. 먼저 엔티티 매니저란 무엇인가? 엔티티 매니저는 엔티티를 저장하고, 수정하고, 삭제하고, 조회하는 등 엔티티와 관련된 모든 일을 처리한다. 개발자의 입장에서 엔티티 매니저는 엔티티를 저장하는 가상의 데이터베이스로 생각하면 된다. 일반적으로 데이터베이스를 하나만 사용하는 애플리케이션은 일반적으로 엔티티 매니저 팩토리를 하나만 생성한다. 엔티티 매니저 팩토리를 생성하면 필요할 때마다 엔티티 매니저를 생성하면 된다. 엔티티 매니저 팩토리는 엔티티 매니저를 만드는 공장인데.. 개발/JPA 2022. 2. 23. Compiler와 Interpreter 차이 이번에는 Compliler와 Interpreter 차이에 대해 알아보겠습니다. 보통 프로그래머들은 프로그램을 작동시키는 소스코드를 작성할 때 고급 프로그래밍 언어로 작성한다. 고급 프로그래밍 언어는 사람의 입장에서 쉽게 이해 가능한 프로그래밍 언어다. 그러나 컴퓨터는 고급 프로그래밍 언어를 이해할 수 없다. 컴퓨터는 오직 0과 1로 구성된 바이너리 코드만 이해하는데 이를 기계어라고 이해한다. 고급 프로그래밍 언어로 작성된 소스코드를 기계어로 바꾸기 위해서 사용되는 것이 Compiler와 Interpreter이다. Compiler과 Interpreter의 큰 역할은 같지만 작동 방식에서 차이가 있다. 이제 그 차이에 대해 알아보겠다. 참고 원시 코드 - 고급 프로그래밍 언어로 작성된 소스 코드, 프로그래머.. OS 2022. 2. 23. JPA 2023. 02.07 09:00 복습 시작 JPA란 무엇인가? JPA는 자바 진영의 ORM 기술 표준이다. 그럼 ORM이란 무엇인가? ORM은 Object-Relational Mapping의 줄임말이다. 이름 그대로 객체와 관계형 데이터베이스를 매핑하는 것이다. 즉 SQL을 직접 짜지 않고 자바 코드로 편하게 객체를 ORM 프레임워크에 저장하면 데이터베이스에 저장할 수 있다. 예전에 Express와 Prisma를 다루어본 적이 있어서 쉽게 이해가 갔다. JPA에 대해 간단히 알아보았다. 그럼 더 중요한 궁금증이 남아있다. 우리는 왜 JPA, 즉 ORM을 사용할까? 웹 서비스를 운영하려면 고객 데이터도 저장하고 서비스 데이터도 저장해야 하고 또 이 데이터들을 사용해야 한다. 그러면 데이터를 저장하고 꺼내오.. 개발/JPA 2022. 2. 22. 2022.02.22 클린 코드 - 3장 함수 TIL (Today I Learned) 2022.02.22 오늘 읽은 범위 3장. 함수 책에서 기억하고 싶은 내용을 써보세요. 함수를 만드는 첫째 규칙은 '작게!'다. 함수를 만드는 둘째 규칙은 '더 작게!'다. (p.43) if문 /else 문 /while 문 등에 들어가는 블록은 한 줄이어야 한다는 의미. 대개 거기서 함수를 호출(p.44) 코드로 다시 한번 상기하자. //모든 코드가 아닌 if문으로만 확인. //올바르지 못한 버전 if(isTestPage){ WikiPage testPage=pageData.getWikiPage(); StringBuffer newPageContent = new StringBuffer(); //이렇게 코드가 if문에서 계속 이어진다. } //올바른 버전 if(isTes.. 독서/클린코드 2022. 2. 22. 마구간 정하기(결정알고리즘) 문제를 풀어보려고 딱 링크에 들어간 순간...!!!! 가장 가까운 두 말의 거리가 최대가 되는 그 최댓값을 출력...??? 독해가 안돼서 엄청나게 헤맸다.. @_@ 결국 해설을 좀 보고 이해...! 개인적으로 이번 문제는 코드보다 독해가 더 어려웠다는 얘기가 ㅎㅎ 잡답은 멈추고 이제 전체 코드를 확인해보겠다! import java.io.*; import java.util.Arrays; public class Unit6 { public static int count(int[] arr, int dist){ int cnt=1;//최소 말 한마리를 배치 int ep=arr[0];//제일 작은 왼쪽 좌표에 배치 for(int i=0;i=dist){ cnt++;//말의 개수를 증가 ep=arr[i];//다음에 비교.. 코딩테스트/인프런 2022. 2. 21. 2022.02.20 노개북 - 2장 의미 있는 이름 TIL (Today I Learned) 2022.02.20 오늘 읽은 범위 2장. 의미 있는 이름 책에서 기억하고 싶은 내용을 써보세요. 의도가 분명하게 이름을 지으라. 좋은 이름을 지으려면 시간이 오래 걸리지만 좋은 이름으로 절약하는 시간이 훨씬 더 많다.(p.22) 프로그래머는 코드에 그릇된(애매한) 단서를 남겨서는 안 된다. 서로 흡사한 이름을 사용하지 않도록 주의하라. (p.24) 검색하기 쉬운 이름을 사용하라. (p.28) 인터페이스 클래스 이름과 구현 클래스 이름 중 하나를 인코딩해야 하다면 구현 클래스 이름을 택하겠다. ShapeFactoryImpl 나 심지어 CShapeFactory가 IShapeFactory보다 좋다 (p.31) 전문가 프로그래머는 자신의 능력을 좋은 방향으로 사용해 남들.. 독서/클린코드 2022. 2. 21. 뮤직비디오(결정알고리즘) 힌트 : 3개의 DVD용량이 17분짜리이면 (1, 2, 3, 4, 5) (6, 7), (8, 9) 이렇게 3개의 DVD로 녹음을 할 수 있다. 17분 용량보다 작은 용량으로는 3개의 DVD에 모든 영상을 녹화할 수 없다. 결정 알고리즘에 대해 학습할 수 있는 알고리즘 문제였다. 이분 검색을 이용한 이 결정 알고리즘은 이분 검색에서 사용하는 lt와 rt 사이에 답이 무조건 존재한다는 가정에서 사용해야 한다. 우선 코드를 먼저 확인하고 이에 대한 설명을 진행하겠다. import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader; import java.util.Arrays; public class Review.. 코딩테스트/인프런 2022. 2. 19. 2022.02.19 노개북 - 1장 깨끗한 코드 TIL (Today I Learned) 2022.02.19 오늘 읽은 범위 1장. 깨끗한 코드 책에서 기억하고 싶은 내용을 써보세요. 회사가 망한 원인은 바로 나쁜 코드 탓이었다. (p.2) 기한을 맞추는 유일한 방법은, 그러니까 빨리 가는 유일한 방법은, 언제나 코드를 깨끗하게 유지하는 습관이다. (p.7) 의존성을 최대한 줄여야 유지보수가 쉬워진다. 오류는 명백한 전략에 의거해 철저히 처리한다. (p.9) 나쁜 코드는 너무 많은 일을 하려 애쓰다가 의도가 뒤섞이고 목적이 흐려진다. 깨끗한 코드는 한 가지에 집중한다. 각 함수와 클래스와 모듈은 주변 상황에 현혹되거나 오염되지 않은 채 한길만 걷는다. (p.10) 아무리 코드가 우아해도, 아무리 가독성이 높아도, 테스트 케이스가 없으면 깨끗하지 않다. .. 카테고리 없음 2022. 2. 19. 좌표정렬 오늘 이렇게 오랜만에 알고리즘 게시글을 남기는 이유는 중요한 것을 배워서 기록하기 위함이다. 바로 객체 정렬을 위해 Comparable 인터페이스를 사용했기 때문이다. 좌표 정렬에 관한 문제다. 설명 N개의 평면상의 좌표(x, y)가 주어지면 모든 좌표를 오름차순으로 정렬하는 프로그램을 작성하세요. 정렬기준은 먼저 x값의 의해서 정렬하고, x값이 같을 경우 y값에 의해 정렬합니다. 입력 첫째 줄에 좌표의 개수인 N(3 코딩테스트/인프런 2022. 2. 14. 이전 1 ··· 20 21 22 23 24 25 26 ··· 29 다음 반응형