안녕하세요오늘은 자바가 어떻게 동작하는지 랑 JVM 관점에서 Static이 어떻게 작동하는지 알아보겠습니다. 자바에서 클래스를 실행시키기 위해서는 메인메소드가 필요합니다.그러면 메인 메소드는 무엇일까요?public static void main(String[] args) { } 를 메인 메소드라고 부릅니다. 정확하게 말하면 스프링 환경이 아닌, 일반 자바를 다루는 환경에서 클래스의 어떠한 값을 콘솔에 출력하기 위해서꼭 있어야 하는 게 바로 메인메소드 입니다.public class StaticTest { public static void main(String[] args) { System.out.println("Hello World"); }} 위 값이 없다면 출력을 할 수가 없죠. 그리고 값,메소드 등을..
안녕하세요 오늘은 Class, Object, Instance 에 대하여 알아보겠습니다 여러분들은 객체지향 프로그래밍에서 기본이 무엇이라고 생각하시나요? 저는 클래스를 도구로 사용하는 것이 제일 기본이라는 생각을 합니다. 객체지향 자체가 클래스안에 많은 변수(=필드),메소드 들이 있고 그 내용들을 다른 클래스에서 가져가다가 쓰는 그런 형태기 때문이죠. 그래서 객체지향을 클래스지향이라고 부르기도 한다고 합니다. 하지만 객체지향은 이해하기가 쉽지 않습니다. 그래서 객체지향을 이해하기 위해 여러 예제를 보고있고, 직접 예제를 짜보며 공부를 하고 있습니다. 그리다가 공부 중에 객체지향 설명을 할 때 항상 나오는 용어에 대해서 궁금증이 생겼습니다. 특히 여러 글이나 강사님들이 설명을 할 때, 어쩔때는 객체, 어쩔때..
들어가며 오늘은 자바에서의 참조에 대해서 알아보겠습니다. 위 내용을 이해하기 위해서는 Java 람다식에 대한 선수지식이 조금 있으면 좋다고 생각합니다. 람다식은 JDK8 에 처음으로 나왔고, 람다 문법을 사용하는 개발자분들도 현재 많이 있을거라고 생각합니다. 여러분들 중에서 람다 문법을 쓰다보면 가끔 알맞게 람다 문법을 잘 사용했는데자꾸 문법에 줄이 그어지는 상황을 보신적이 있을 것 입니다. 그리고 그 메시지를 확인해보면 이런 문구가 있습니다. 왜그럴까? 하고 Replace lambda 를 누르면 문법이 좀 신기한 모양으로 바뀌고, 간결해 지는 것을 볼 수 있습니다. 그리고 오류도 당연히 생기지 않죠 실제로 실행일 시켜봐도 같은 동작을 하는 것을 볼 수 있습니다. 한번 간단한 예제로 보겠습니다. 두..
안녕하세요 오늘은 디자인 패턴에 대해서 간단하게 알아보겠습니다. 디자인 패턴 디자인 패턴은 왜 필요할까요? 정답은 객체지향적 설계를 위해서 필요합니다. 코드 변경을 최소화 하면서 요구사항을 수용할 수 있음. 반복적으로 코드 설계를 하다보면 일정한 패턴이 생길꺼임 이러한 패턴은 특정 상황에 맞는 해결책을 빠르게 찾을 수 있도록 도와준다 그럼 디자인 패턴에 대해서 알아보자 디자인 패턴에 대표적으로 생성,행위,구조 3가지로 분류가 됩니다. 그중에서 일단 생성 디자인 패턴에 대해서 알아보겠습니다. 객체의 생성을 다루는 디자인 패턴 대표적으로 3가지가 있습니다. 1) 빌더 패턴 2) 싱글톤 패턴 3) 팩토리 패턴 단순 팩토리 패턴, 팩토리 메소드 패턴, 추상 팩토리 패턴 그중에서도 제일 많이 쓰이는 팩토리 메소드..
안녕하세요 오늘은 Solid원칙 에 대해서 알아볼 것 입니다. 원티드 백엔드 챌린지를 참고하여 작성을 했습니다! 주니어 개발자인 저한테 Solid원칙까지 신경쓰면서 코드를 짜고, 고민하는 것은 너무 힘들다고 생각합니다 그럼에도 불구하고 시니어 개발자들이 SOLID을 이야기를 가끔 하고는 합니다 왜 알아야하고, 어떻게 적용을 해야할지에 대한 고민을 항상 하고는 합니다. 그러면 왜 SOLID원칙을 지켜야하고 왜 사용해야 할까요? 답은 꽤나 간단하고, 명쾌한 답이 예~~전부터 나와있습니다 바로 가독성 확장성 재사용성 유지보수성 을 향상시키는데 도움이 되기 때문입니다. 여러분들도 알다시피, 객체지향에 4가지인, 캡슐화, 상속, 추상화, 다형성 을 활용하면 뭐가 좋을까요? 바로 위 내용하고 똑같을 것입니다. 결국..
안녕하세요🖐 오늘은 객체지향 개념에서 협력,책임,역할 에 대하여 이야기를 해보려고 합니다. 우리가 살아가고 있는 곳에서 협력은 무엇을 의미할까요? 우리가 무언가를 필요로 할 때 도움을 요청하는 것? 도움을 요청하였을 때 요청을 수락하는 것? 간단하게 이정도로 말할 수 있을 것 같습니다. 프로그래밍에서 협력이란 단어에서 유추 할 수 있는 뜻은 무엇을 해야하는지 무엇을 누가? (잘하는지/할줄 아는지) 를 아는 것 무엇을 누군가에게 요청하기 그러면 객체지향 프로그래밍에서 왜 협력이 필요할까요❓ 객체지향 프로그래밍에서 기능을 구현하는 유일한 방법이기 때문이다. 객체가 협력을 하기 위해서는 위에서 유추한 내용이 필요합니다. 무엇을 해야하는지 무엇을 누가? (잘하는지/할줄 아는지) 를 아는 것 무엇을 누군가에게 요..
안녕하세요🖐 오늘은 객체지향 핵심에 대하여 포스팅을 해보겠습니다. 변화에 적응하는 소프트웨어의 특징은 무엇일까요? 저는 이 질문에 대하여 고민을 해보았는데 마땅히 떠오르는게 확장성? 정도 였습니다. 정답은 바로 유연성 확장성 유지 보수성 이 3가지가 충족이 된다면 변화에 적응하는 소프트웨어의 특징입니다. 그러면 이 3가지를 충족시키기 위해서 중요하게 관리해야하는 것이 있다고 합니다 바로 '의존' 입니다. 의존이란? 어떠한 일을 자신의 힘으로 하지 못하고 다른 어떤 것의 도움을 받아 의지하는 것 의존은 코드에서는 어떻게 표현될까? 객체 참조에 의한 관계 메서드 리턴타입이나 파라미터로서의 의존관계 상속에 의한 의존 관계 구현에 의하 의존 관계 등 여러가지가 있을 것 입니다. 1) 객체 참조에 의한 연관 관계..
오늘은 메모리에 대하여 알아보겠습니다. 기본적으로 어플리케이션(=프로세스) 에서 실행은 메모리에 적재가 되며 실행 이 됩니다. ?? 그러면 어떻게 메모리에서 동작이 되나요 간단하게 예시를 들어서 설명을 해보겠습니다. Q. 자바를 이용하여 두개의 정수를 더하여 결과를 출력하는 프로그램을 만들어보겠습니다. 두개의 정수를 더해야 하므로 컴퓨터 프로그램안에 두개의 정수를 기억하는 공간이 있어야 합니다. 컴퓨터 언어로 해석을 해보면 위 두개의 정수는 '데이터' 이고'더하라' 는 것은 컴퓨터 프로그램을 동작시키는 '명령어' 입니다. 간단하게 설명을 하면 -> 컴퓨터는 0과1로 표현된 정보만을 이해합니다.그리고 0과 1로 표현되는 정보에는 크게 두 종류가 있는데 그게 바로 데이터 와 명령어 입니다 위 과정이 ..