분류 전체보기
-
(JAVA) 다형성과 동적 바인딩JAVA 2021. 7. 19. 16:42
객체 지향의 중요한 개념인 다형성과 동적 바인딩에 대해서 정리해 보려고 한다. 추상화때 예시로 들었던 코드를 가볍게 수정해서 설명해보도록 하겠다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 package blog_binding; class Animal{ void howl() { System.out.println("Animal"); } } class Dog extends Animal{ void howl() { System.out.println("Dog"); } } public class Test1 { public static void main(String[] args) { Animal a = new Dog(); a.howl(); } } Col..
-
(JAVA) 추상화와 추상클래스JAVA 2021. 7. 19. 14:18
1. 추상화란? - 우리는 보통 알고는 있지만 정확하게 표현하기 힘든 것들을 중요한 부분이나 특징점을 잡아 설명하고는 한다. 이것을 '추상적으로 표현한다' 즉 '추상화한다' 라고 하는데 객체지향의 개념에서 추상화는 중요한 개념 중에 하나이다. - 컴퓨터 과학에서의 추상화는 복잡한 자료, 모듈, 시스템 등으로부터 핵심적인 개념 또는 기능을 간추려 내는 것을 말한다. - 객체 지향 관점에서의 추상화는 클래스를 정의할 때, 불필요한 부분들을 생략하고 객체의 속성 중 중요한 것에만 중점을 두어 개략화 하는 것, 즉 클래스들의 중요하고 공통된 성질들을 추출하여 슈퍼 클래스를 선정하는 개념이다. 2. 추상화를 왜 하는가? - 추상화를 통해 잘 설계했다면 여러개의 클래스를 정의했을 때, 중복 코드가 현저히 줄어들 것..
-
(JAVA) 객체 지향 언어의 특징JAVA 2021. 7. 18. 15:39
자바는 C와 달리 객체지향형 언어이다. 객체 지향 언어의 특징을 정리해보려고 한다. "함수(객체)가 주체가 되는 언어" 객체 지향 언어의 4가지 특징 추상화 캡슐화 상속 다형성 1. 추상화 - 설계 단계에서 중요하게 생각되는 부분으로 물체의 주된 부분만 부각시키는 것(속성 + 기능) - 추상 클래스로 구현이 가능하다. 2. 캡슐화 - 코드를 전부 알고 있지 않아도 사용법(method signature)만 알면 누구나 사용가능하고 그로 인해 이미 만들어진 코드는 다시 구현할 필요 없이 재사용할 수 있게 되기 때문에 코드의 재사용성이 증가하고 작은 함수 여러개로 이루어져 있어 오류가 발생하면 그 부분만 파악하면 되기 때문에 검사비용이 절감되고 오류의 파급효과가 줄어든다. 3. 상속 - 부모 클래스의 멤버 변..
-
[프로그래머스] 로또의 최고 순위와 최저 순위 - Java코딩 테스트 2021. 7. 14. 16:03
1. 문제 설명 로또 6/45(이하 '로또'로 표기)는 1부터 45까지의 숫자 중 6개를 찍어서 맞히는 대표적인 복권입니다. 아래는 로또의 순위를 정하는 방식입니다. 1 순위당첨 내용 1 6개 번호가 모두 일치 2 5개 번호가 일치 3 4개 번호가 일치 4 3개 번호가 일치 5 2개 번호가 일치 6(낙첨) 그 외 로또를 구매한 민우는 당첨 번호 발표일을 학수고대하고 있었습니다. 하지만, 민우의 동생이 로또에 낙서를 하여, 일부 번호를 알아볼 수 없게 되었습니다. 당첨 번호 발표 후, 민우는 자신이 구매했던 로또로 당첨이 가능했던 최고 순위와 최저 순위를 알아보고 싶어 졌습니다. 알아볼 수 없는 번호를 0으로 표기하기로 하고, 민우가 구매한 로또 번호 6개가 44, 1, 0, 0, 31 25라고 가정해보겠..
-
(JAVA) 메소드 오버로딩 vs 메소드 오버라이딩JAVA 2021. 7. 7. 17:11
1. 메소드 오버로딩 JAVA는 C언어와 다르게 함수명을 중복해서 정의할 수 있다. 조건과 특징은 아래와 같다. 같은 알고리즘(로직) 기능을 가지고 있어야 한다. 매개변수, 인자의 개수 or 데이터 타입(리턴 타입)이 달라야 한다. ( 하지만 기능은 같음 ) 상속 관계 X 여러개 정의할 수 있다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 package test; public class Test1 { static int sum(int a, int b) { return a+b; } static int sum(int a, int b, int c) { return a+b+c; } static double sum(double a, double..
-
(JAVA) 미니 프로젝트 - 자판기 구현하기JAVA 2021. 7. 2. 15:36
1. 명세 - 자판기 프로그램을 구현한다. 자판기의 종류는 임의로 결정하며 아래와 같은 방식을 구현한다. 자판기 소개와 함께 자판기를 출력한다. ex) 1. 커피 2.주스 3.콜라 돈을 입력받는다. 번호를 입력하면 그에 맞는 상품이 출력된다. 여기서 재고 관리를 해야 하는데 재고가 없는 경우엔 "재고 없음"을 출력한다. 이외의 실제 자판기에서 나올법한 예외들 ex) 잔액 부족, 잔돈 반환 등등 을 처리한다. 위 내용 까지가 자판기 유저 인터페이스 부분이고 돈을 넣을 때, 지정해 놓은 돈을 입력하면 ex)1004 관리자 메뉴로 넘어간다. 2. 기능 - 관리자 메뉴에서의 기능은 아래와 같다. 자판기의 메뉴를 변경하는 기능 자판기의 메뉴의 가격을 변경하는 기능 자판기의 메뉴의 재고를 추가하는 기능 자판기의 메..
-
(C / C++) 파일 입출력 해보기(업다운게임)C언어 2021. 7. 1. 10:49
파일 입출력이란 2가지로 나누어 진다. 파일에서 작업공간으로 데이터를 읽어오는 작업 작업공간의 데이터를 파일에 작성하는 작업 과정은 3가지가 있다. fopen() -> 파일을 연다. 오픈한 파일에 작업을 한다. fclose() -> 파일을 닫는다. fopen() : 파일명과 모드를 입력 받아서 파일의 메모리 주소를 반환하는 함수 fscanf() : 파일로부터 입력을 받을 때 사용하는 함수 fprintf() : 파일에 출력하는 함수 fclose() : 파일을 닫는 함수 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 // 파일 입출력 (읽기 모드) #include void main() { FILE* in; int num; double d; char c; char str[10..
-
(C/C++) 가위바위보 게임 구현하기C언어 2021. 6. 30. 17:50
컴퓨터와 가위바위보를 하는 게임을 구현해보자. 입력은 숫자로 받고 1(바위), 2(가위), 3(보) 로 정했다. 컴퓨터의 수는 랜덤하게 정해지고 승패 결과를 출력하고 누적 승리 수를 체크한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 #include #include #include // 1: 바위 2: 가위 3: 보 void rsp(int n) { static in..