전체글
[자바] 인터페이스는 객체지향의 4대 특성중에 무엇을 지니는가?
객체지향의 4대 특성은 캡슐화, 추상화, 상속성, 다형성이다. 인터페이스를 이용하면 해당 4가지 특성 중 추상화를 충족시킨다고 생각합니다. 인터페이스는 언뜻 추상 클래스와 비슷한 특성을 보이지만, 그 목적은 함수의 구현을 강제하는 데에 있습니다. 이를 통해서, 인터페이스를 구현하는 모든 클래스는 인터페이스에서 구현을 강제하는 모든 기능을 갖추어야 하고, 이에 따라 통일된 규격을 갖출 수 있다는 것이 장점입니다. 상속과는 달리 불필요한 속성과 기능을 강제로 상속받지 않아도 되기 때문에, 상속에 비해 결합도가 낮다는 것도 특징입니다. 인터페이스를 통해 공통적인 부분을 추상화함에 따라서 프로그래머가 캡슐화나 다형성을 잘 살린 프로그래밍을 가능하게 하는 필수적인 특성이라고 생각합니다.
[자바] 객체지향의 4가지 특성
1. 캡슐화 캡슐화(encapsulation)이란, 추상화의 한 종류로 객체의 속성과 메서드를 묶고, 필요한 부분만 외부에 공개하는 방식으로 불필요하게 노출될 필요가 없는 내부 구현 정보를 숨기는 것이다 예시 코드로, 제 지갑을 소개합니다. 총 금액을 알려주는 기능과, 돈을 지불하는 기능을 갖추고 있습니다. public class Wallet { private int money; public Wallet(int money){ this.money = money; } public int getTotalMoney(int price) { return this.money; } private void substractMoney(int charge) { money -= charge; } } 자바에서 캡슐화를 가능하게..
[우아한테크코스] 프리코스 2주차 숫자 야구 미션을 마치며
Intro. 11/02 ~ 11/08 : 프리코스 2주차 숫자 야구 미션을 완료했습니다. https://github.com/woowacourse-precourse/java-baseball GitHub - woowacourse-precourse/java-baseball: 숫자 야구 게임 미션을 진행하는 저장소 숫자 야구 게임 미션을 진행하는 저장소. Contribute to woowacourse-precourse/java-baseball development by creating an account on GitHub. github.com 사실 숫자야구 게임은 너무 유명한 게임이고, 중고등학생 시절에도 친구들과 즐겨 했었기에 룰은 아주 잘 알고 있었습니다. 언뜻 보니 기능 구현 자체가 어렵다기 보다는, 클래..
[우아한테크코스] 프리코스 1주차 온보딩 미션을 마치며
Intro. 대망의 프리코스 1주차 온보딩 미션을 완료했습니다. https://github.com/woowacourse-precourse/java-onboarding GitHub - woowacourse-precourse/java-onboarding: 온보딩 미션을 진행하는 저장소 온보딩 미션을 진행하는 저장소. Contribute to woowacourse-precourse/java-onboarding development by creating an account on GitHub. github.com 문제는 코딩테스트 형식과 비슷했으며, 모두 7문제로 이루어져 있습니다. 미션 마감 기한은 1주이며, 제출 가능 시간은 종료일 전날부터 제출이 가능합니다. 특히 이번 미션에서 지켜야 할 제약 조건은, '특..
객체지향의 사실과 오해 : 2장
02. 이상한 나라의 객체 작가가 말하는 객체란? -> 하나의 개별적인 실체로 식별 가능한 물리적, 개념적인 사물은 모두 객체이다. 객체를 상태, 행동, 식별자를 지닌 실체로 바라보자. 객체의 행동 결과를 예상하기 위해, 상태라는 개념을 고안함. 행동의 결과를 모두 기억하고 이를 통해 다음 행동의 결과를 예측하려는 시도는 너무 번거롭다는 배경 속에서 탄생함. 특정 시점에 객체가 가지고 있는 정보의 집합으로 객체의 구조적 특징을 표현한다. 프로퍼티(property) 객체의 상태를 구성하는 모든 특징(ex. 키, 몸무게, 위치 정보 등) 프로터피는 정적이다(변경되지 않는다.) 프로퍼티 값(property value) 객체의 상태를 나타내는 값 프로퍼티 값은 동적이다(변경 가능하다.) 링크(link) 객체와 ..
객체지향의 사실과 오해 : 1장
최근 자바를 공부하기 시작하면서 점차 좋은 코드를 작성하는 것에 관심이 생겼다! 좋은 Java 프로그램 코드를 적기 위해서는 객체지향의 본질을 잘 이해하고, 이를 코드에 녹여낼 수 있어야 한다던데 대체 객체지향의 본질은 무엇이고, 객체지향의 올바른 설계는 어떻게 해야 하는지? 라는 물음에 답을 구하기 위해 객체지향의 사실과 오해 를 읽고 동료들과 스터디를 시작하게 되었다. 01. 협력하는 객체들의 공동체 객체지향이란 단순히 현실을 모방하는 것이 아니었다. 첫 페이지를 펼치고서 정말 놀랐던 점은, 객체지향의 목표는 실세계를 모방하는 것이 아니라, 오히려 새로운 세계를 창조하는 것이다. 21p 실세계의 모방이라는 객체지향의 개념은 훌륭한 프로그램을 설계하고 구현하는 실무적인 관점에서는 부적합하지만, 객체지향..
2022 2분기 회고, 요새 드는 생각들
# 조금의 휴식기를 가졌다..? 4~5월부터는 군 복무가 끝나는 날만을 기다리며 아무 것도 손에 잡히지 않았던 것 같다 ㅠ 왠지 이럴 것 같아서, 연초에 계획해 두었던 스케줄에 조금 박차를 가한 것이 참 옳은 판단이었다고 느꼈다. 뒤로 갈수록 텅텅 비는 내 스트릭..ㅠㅠ # 2022 카카오 인턴쉽 코팅테스트(5 / 7) 루즈해진 나를 위한 약간의 자극제로, 2022 카카오 인턴쉽 코딩테스트를 응시하게 되었다. 응시 날짜 : 2022년 5월 7일 14:00 ~ 5월 7일 19:00까지 제한 시간 : 5시간, 5문항 기존 카카오 전형은 코딩테스트를 먼저 치루고, 서류 전형과 분리해서 결과를 안내해 주었는데 아쉽게도 이번년도부터 서류 + 코딩테스트를 함께 평가해서 결과를 안내해 주었다. 코딩테스트만 치룰 목적..
[백준] 21609. 상어 중학교 (파이썬)
문제 상어 중학교 오토 플레이가 모두 끝났을 때 획득한 점수의 합을 구해보자. 시간 제한 1초 (추가 시간 없음) 메모리 제한 1024MB 오토 플레이란? 상어 중학교 코딩 동아리에서 만든 게임이다. 공간의 크기 N x N 블록의 종류 : 검은색(-1), 무지개색(0), 일반 블록(M가지 색상, 1~M 사이 자연수로 표현) 인접한 칸 : 상하좌우로 접해 있는 경우를 지칭 블록 그룹이란? 연결된 블록의 집합 일반 블록을 적어도 하나 이상 포함 일반 블록의 색은 모두 같아야 함 검은색 블록은 포함시키지 말 것 블록의 수는 2개 이상 모두 인접해 있어야 함 게임의 오토 플레이 기능 블록 그룹들 중, 크기 > 무지개 블록의 수 > 기준 블록의 행 > 기존 블록의 열 기준으로 큰 값을 지닌 블록 그룹을 선택. 1..