본문 바로가기

분류 전체보기

(43)
(JAVA)인터페이스 음식을 생각해보자. 음식에는 한국 음식 일본 음식 이탈리아 음식 등등 많을 것이다. 예시가 이상 할 수 있겠지만 각 나라별 음식 메서드를 추가 할 때, 공통적으로 해당 국가의 식당의 갯수를 반드시 포함 해야 한다고 가정해 보자. 추상화를 쓰면 해결할 수 있을것이다. https://acid7937.tistory.com/24 그런데 한국음식 일본음식 이탈리아음식을 봤을때... 뭔가... 한국음식이랑 일본음식을 젓가락 쓰는 식문화권으로 따로 묶어버리고 싶다. 그럼 이때 어떻게 묶어버릴까? 이때 사용하는게 인터페이스 이다. (추상화랑 이때 갈린다.) 바로 코드를 살펴보자. abstract class food{ abstract void Numberofrestaurants(); } class koreanfood e..
(JAVA) 추상화 이번에는 추상화에 대해서 알아볼 것이다. 추상화라는 단어를 생각해보자 뭔가 애매한 느낌인가 싶지 않은가? 사실 그렇다. 추상화는 부모가 구현을 하지 않고, 부모가 이런게 있어..선언부만 작성하고 자식에게 던진다 (이번에는 가난한 상속인가 ㅠㅠ) 이렇게만 말하면 뭔 말인지 모를것이다. 이럴때는 코드와 설명이 최고지! (바로 아래 설명으로 가자) abstract class buy{ abstract void fruit(int f1, int f2); abstract void confectionery (int c1,int c2); abstract void gohome(); } class person1 extends buy{ @Override public void fruit(int f1, int f2) { Syst..
(JAVA)캡슐화 (getter와 setter) 날짜 입력 프로그램이 있다고 가정해보자 사용자가 날짜를 입력 할 때 우리는 어.. 오늘은 xxxx년 xx월 xx일 이라고 입력할 것이다. 그런데 만약 개발자가 외부로 부터의 데이터 보호 라는 이유로 일부 항목을 private으로 막는다고 생각해보자. 이것 때문에 우리는 접근제어자를 배웠었다. --------------------------------------------------------------------------------------------------------------------------------------- 그런데 접근제어자로 막아버리면 입/출력은 어떻게 진행시킬까 하는 의문이 들것이다. 캡슐화는 유지하면서 입출력만 따로 시켜줄때 필요한 것이 getter와 setter 이다. 이번..
(JAVA)캡슐화 (접근제어자) 우리가 식당에서 밥을 주문한다고 상상해 보자. 우리는 자리에 앉은뒤에 서버에게 원하는 메뉴를 고르고 서버는 주방에 알린뒤 음식을 가지고 나올것이다. 당연하지만 생각해보면 주방에서 음식을 줄때 식당의 비법이 담긴 레시피를 손님들에게 공개하며 음식을 주지는 않을것이다. 프로그램도 마찬가지 이다. 우리가 네이버에 로그인을 할때 우리의 데이터 베이스를 우리가 직접 찾아서 아이디와 비밀번호의 일치 여부를 확인하지 않을 것이다. 이렇게 프로그램이 실제 구연하는 내용을 은닉 하는 행위를 캡슐로 감싼것에 비유하여 캡슐화 라고 한다. 이번 포스트 에서는 객체지향에서 중요한 개념인 캡슐화를 이해하는 시간을 가져볼 것이다. 캡슐 하면 어떤 이미지가 떠오르는가? 이런 이미지가 떠오를 것이다. 캡슐화를 하여 분리는 하는 이유는..
(JAVA)객체지향 객체지향... 객체... 이게다 무슨 소리인가 싶다. 사전적 뜻을 먼저 살펴보자. 객체 지향 프로그래밍(영어: Object-Oriented Programming, OOP)은 컴퓨터 프로그래밍의 패러다임 중 하나이다. 객체 지향 프로그래밍은 컴퓨터 프로그램을 명령어의 목록으로 보는 시각에서 벗어나 여러 개의 독립된 단위, 즉 "객체"들의 모임으로 파악하고자 하는 것이다. 각각의 객체는 메시지를 주고받고, 데이터를 처리할 수 있다. 시간을 길게 두고 찾아보았다. 나는 객체는 무엇이다. 라고 정의한 정보를 찾기가 다소 어려웠다. 깊게 알아보니 아직도 객체라는 정의에 대해서 여러 사람들 간에 논의가 많다고 한다. 비슷한 비유와 설명들을 모아보면 1.데이터와 기능을 모은 컴퓨터의 자원의 묶음을 객체라고 한다. 2..
(JAVA)Overriding 과 Overloading Overriding 과 Overloading. 갈수록 개념이 어려워 지고 있다. 힘들어도 계속 나아가다 보면 익숙해질 날이 올거라고 믿는다. 오버라이딩(Overriding) 뭔가 더 탑승 시켜서 본질을 바꾸는 것이다. 상속 개념에서 자식이 부모로 부터 메서드 값을 받는데 이걸 자식이 메서드를 그대로 복사 붙여넣기로 끌고온뒤 내용을 수정해서 사용하면 그게 오버라이딩 이다. (코드를 보는게 이해가 빠를것이다.) 즉 오버라이딩을 하려면 메서드 시그니처가 일치해야 한다는 뜻이다. (메서드 시그니처 = 메서드의 변수타입, 리턴타입, 이름, 순서) 오버로딩(Overloading)은 본연의 모습은 살아 있는데 여러 값을 추가로 얹어서 여럿이서 사용하는것이다. 오버로딩은 굳이 상속과는 관련은 없다.(상속이 아닌 상황에..
(JAVA)상속2 이번에는 긴장 해야할지도 모르겠다. 이해가 안가도 천천히 읽다보면 이해가 갈수도 있다. 나는 오래걸렸다... 우리는 저번 포스트에서 기본적인 상속의 작동에 대해서 알아보았다. https://acid7937.tistory.com/17 하지만 시도해 본사람이 있을지는 모르겠지만 생성자를 만들어서 인자를 매개변수에 넣게 되면 무슨짓을 해도 저번처럼 하면 상속이 안될 것이다. 오늘은 매개변수가 있을때 어떻게 해야 하는지 알아보겠다. 혹시 생성자가 인자와 매개변수 넣는게 기억이 안나면 여길 참조하자 https://acid7937.tistory.com/16 class HCalculator { int left, right; /*public void enter (int left, int right) { this.lef..
(JAVA)상속 상속... 뭔가 느낌이 오질 않는가? 상속 받는다... 키야 기분이 좋다. 하지만 배우는 입장에서는 자바의 상속은 기분이 나쁘다. 지금 내 기분이 그렇다. 상속은 말 그대로 간단하게 A 클래스의 기능을 B 클래스에서 사용 가능하게 만드는것이다. 간단하다. 하지만 간단하지 않다... 뭔소리인지 알아보자. class HCalculator { int left, right; public void enter(int left, int right) { this.left = left; this.right = right; } public void avg() { System.out.println((this.left + this.right) / 2); } public void sum() { System.out.println..