전체 글 36

[JAVA]객체지향과 객체지향 프로그래밍(OOP)

들어가기 전 먼저 이 글을 쓰게 된 계기를 말하자면 스프링과 자바를 이용해서 개발하는 중에 이런 생각이 들었다. '그래서 쓰는 법은 알겠는데 controller - service - repository 구조에서 각각의 클래스들을 활용한게 어떤 의미에서 객체지향 프로그래밍이라는거지?' (이걸 생각하기까지 1년 반이 걸린 나에게 충격이였다.) 답을 찾기 위해 객체지향프로그래밍 즉 OOP가 정확히 어떤것인가를 공부하다가 도저히 이해가 안가서 OOP를 공부하기 이전에 OOP의 본질 객체지향이라는 것이 무엇인가를 찾아보았고 와중에 조영호님의 '객체지향의 사실과 오해'를 읽고 내가 이해한 바를 정리하기 위해 쓰게 되었다. 1. 객체지향이란? 우선 객체지향 패러다임이 왜 등장했는지는 다른 분들이 많이 이야기한다. 나..

개발/java 2023.07.31

[JAVA]클래스, 객체, 인스턴스

클래스, 객체, 인스턴스 객체 다른 글들을 보면 프로그래밍에서 객체라는 것은 소프트웨어 세계에서 구현될 대상, 클래스에 정의된 그대로 생성된 실체라고들 한다사실 이 부분이 많이 이해가 안갔다 누군가는 실세계에 존재하는 것이 객체라고도 하며 누군가는 소프트웨어에서 생성된 실체 라고 하는데 뭐가 맞고 틀린지는 크게 중요하지 않은 것 같다.  우선 우리는 개발자다. 개발자 관점에서라면 소프트웨어를 구현하는 과정에서 어떤식으로 바라볼지가 중요하다. 이런 의미에서 내가 생각한 객체라는 것은 실세계의 구현할 객체를 소프트웨어 세계에 실체화 한 것을 객체라고 생각한다. 즉 다시 말해 우리가 만들고자 했던 실세계의 어떠한 객체를 프로그램에 실제로 생성된 것을 객체라고 본다는 의미이다.  이러한 맥락에서 객체가 가지는 ..

개발/java 2023.07.20

[JAVA]Call By Reference, Call By Value

프로그래밍에서 메소드 매개변수 호출 방식에는 call by reference와 call by value 두가지 방식이 있다. call by reference - 직역을 하자면 참조에 의한 호출이다. call by value - 값에 의한 호출.저렇게 적어놓으면 뭔가 더 없나 하겠지만 정말 저게 전부다. 우선 자바에서 저 두개를 이해하기 전에 JVM을 알고 있다면 훠어얼씬 이해하기 쉽다. 만약 자세하게 모른다면 아래 두개만 우선 기억하자자바에서는 다른 메소드를 호출하게 될 경우 스택이라는 영역 내에 프레임이라는 메소드의 상태 정보를 가지고 있는 하나의 단위가 들어간다. 자바에서 원시 타입의 변수는 스택 프레임 안에서 값과 함께 생성된다. 참조 타입의 변수는 실제 객체의 값은 Heap 영역에 생성되고 해당 ..

개발/java 2023.07.14

[JAVA]JVM

JVM과 자바 어플리케이션 JVM은 자바 프로그램을 실행하기 위한 소프트웨어이다. 다시 말해 결국 JVM도 일종의 프로그램이다. 그렇기 때문에 자바 어플리케이션을 실행 시키면 우선 JVM이 OS로부터 메모리를 할당을 받는다. 이후 .java 파일의 소스 코드를 컴파일 하여 나오는 바이트 코드를 해석하고 실행하는 역할을 한다. public class Main { public static void main(String[] args) { Audio audio = new Audio(); } } class Audio { final static String color = "WHITE"; int volume; void volumeUp() { this.volume += 1; } void volumeDown() { th..

개발/java 2023.07.06

[JAVA]String

1.시작하기 전 동일성과 동등성 동일성은 비교하는 두 객체가 완전히 같은 것을 의미한다. 다시 말해 두 객체는 하나의 객체로 봐도 무방하다라는 뜻이며 해당 두 객체의 주소값은 같은 주소값을 가리킨다. 동등성은 두 객체가 가지고 있는 값은 같지만 서로 다른 객체라는 것을 의미한다. 쉽게 말하면 주소값은 다르지만 두 객체가 가지고 있는 값은 같다라고 볼 수 있다. 자바에서는 동일성을 확인하기 위해서는 == 을 사용하고 동등성을 확인하기 위해서는 equals 메소드를 사용한다. equals 메소드는 모든 객체들의 부모 객체인 Object 객체에서 구현하고 있으며 해당 메소드의 구현을 보면 == 을 사용하여 결과를 return 한다. 따라서 해당 메소드를 오버라이딩 하여 재정의 하지 않고 쓴다면 결국 동일성을 ..

개발/java 2023.07.04

[JAVA]JVM, JRE, JDK

JVM(Java Virtual Machine) JVM은 일종의 프로그램이다. 우선 JAVA와 C와 같은 언어들은 컴퓨터가 알아들을 수 있도록 소스 코드를 컴파일 하여 기계여로 변환하는 과정을 거친다. 하지만 c나 c++ 등의 언어들은 각 OS에 맞는 컴파일러가 없다면 윈도우에서 개발한 프로그램이 다른 OS에서는 동작하지 않는다. 하지만 JAVA는 "Write once, Run anywhere"라는 모토를 가지고 있다. 말 그대로 한 번 작성되면 다른 운영체제에서도 동일하게 실행 될 수 있다는 의미이다. 이를 가능하게 하는 것이 JVM이다. 각 OS 별로 JVM이라는 통역사를 둔다고 생각하면 이해하기 편하다. JAVA는 컴파일러((javac)가 컴파일시에 작성된 코드(.java 파일)를 바로 기계어로 변환..

개발/java 2023.07.03

[프로그래머스]프로세스(java)

https://school.programmers.co.kr/learn/courses/30/lessons/42587 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 대략 35분 정도 걸린거 같다^^... public int solution(int[] priorities, int location) { int answer = 0; //우선순위 큐 Queue prio = new LinkedList(); //위치 즉 location 큐 Queue idx = new LinkedList(); //우선순위 큐는 그대로 넣고, location은 순서대로 초기화 for (i..

개발/PS 2023.06.30

[프로그래머스]크레인 인형뽑기 게임(java)

https://school.programmers.co.kr/learn/courses/30/lessons/64061 프로그래머스 코드 중심의 개발자 채용. 스택 기반의 포지션 매칭. 프로그래머스의 개발자 맞춤형 프로필을 등록하고, 나와 기술 궁합이 잘 맞는 기업들을 매칭 받으세요. programmers.co.kr 스택을 활용한 문제이다. 참고로 다른 사람의 풀이 중에서는 List를 이용해서 푸신 분들도 있다. public static int solution(int[][] board, int[] moves) { int answer = 0; Stack bucket = new Stack(); //peek 시에 최초에는 아무것도 없기 때문에 0을 넣어줌 bucket.push(0); for (int move : m..

개발/PS 2023.06.29

[백준]괄호(java)

https://www.acmicpc.net/problem/9012 9012번: 괄호 괄호 문자열(Parenthesis String, PS)은 두 개의 괄호 기호인 ‘(’ 와 ‘)’ 만으로 구성되어 있는 문자열이다. 그 중에서 괄호의 모양이 바르게 구성된 문자열을 올바른 괄호 문자열(Valid PS, VPS)이라고 www.acmicpc.net 이 문제는 스택을 활용한 가아아아아아장 대표적인 문제다. 코드에 주석으로 각 라인이 어떤 것을 의미하는지 달아놨다, public static String solution(String str) { String result = "YES"; //스택 선언 Stack stack = new Stack(); for (char x : str.toCharArray()) { //해당..

개발/PS 2023.06.29

[망원동]햄버거 맛집 헤이,로라(hey, laura!)

2023-06-29 망원동 맛집 기록! 망원역에서 걸어서 10분 정도 걸어가면 위치한 곳이다. 내돈내산임 https://search.naver.com/search.naver?where=nexearch&sm=top_hty&fbm=0&ie=utf8&query=%EB%A7%9D%EC%9B%90%EB%8F%99+%ED%97%A4%EC%9D%B4%EB%A1%9C%EB%9D%BC 망원동 헤이로라 : 네이버 통합검색 '망원동 헤이로라'의 네이버 통합검색 결과입니다. search.naver.com 먹은 메뉴는 헤이로라(더블 페티) - 13,900원 클랙식 치즈버거 + side set(오리지널 감자튀김 + 제로콜라) - 13,700원 총 금액 : 27,600 수제버거 집으로 내가 먹은 헤이로라는 개인적으로 할라피뇨 때문..

먹방 2023.06.29