오버 로딩 한 클래스 내에 같은 이름의 메서드를 여러 개 정의하는 것을 '메서드 오버 로딩(method overloading)' 또는 '오버 로딩(overloading)'이라고 한다. 오버 로딩 조건 1. 메서드 이름이 같아야 한다. 2. 매개변수의 개수 또는 타입이 달라야 한다. ※ 반환 타입은 오버 로딩을 구현하는데 아무런 영향을 주지 못한다. 오버 로딩의 대표적인 예 오버로딩의 대표적인 예로는 println 메서드가 있는데, PrintStream클래스에는 어떤 종류의 매개변수를 지정해도 출력할 수 있도록 아래 10개의 오버 로딩된 println 메서드를 정의해놓고 있다. 즉, println 메서드를 호출할 때 매개변수로 넘겨주는 값의 타입에 따라서 아래 오버 로딩된 메서드들 중의 하나가 선택되어 실..
MVP 패턴 (MVP pattern) MVP 패턴은 MVC 패턴으로 파생되었으며 C인 컨트롤러가 프레젠터 P로 교체된 패턴이다. MVC 패턴의 컨트롤러가 입력을 받아 모델과 뷰에게 전달했다면, MVP 패턴은 뷰가 입력을 받아 프레젠터를 통해 모델에 접근할 수 있다. 프레젠터가 뷰와 모델의 매개체 역할을 한다. 모델과 뷰의 결합도를 낮추면 업데이트 또는 수정 시 관련된 코드만 수정하면 되기 때문에 확장성이 개선된다. 단, 애플리케이션이 복잡해질수록 뷰와 프레젠터 사이의 의존성이 강해질 수 있다. 이미지 출처 - 면접을 위한 CS 전공지식 노트
MVC 패턴 MVC 패턴은 모델(Model), 뷰(View), 컨트롤러(Controller)로 이루어진 디자인 패턴이다. 애플리케이션의 구성 요소를 세 가지 역할로 구분하여 개발 프로세스에서 각각의 구성 요소에만 집중해서 개발할 수 있어 재사용과 확장성이 용이하다는 장점이있지만, 애플리케이션이 복잡해질수록 모델과 뷰의 관계가 복잡해지는 단점이 있다. MVC 패턴을 이용한 대표적인 라이브러리로 리엑트(React.js)가 있다. 모델(Model) 모델은 애플리케이션의 데이터인 데이터 베이스, 상수, 변수를 뜻함. 뷰에서 데이터를 생성하거나 수정하면 컨트롤러를 통해 모델을 생성하거나 갱신한다. 뷰(View) 뷰는 사용자 인터페이스 요소를 나타낸다. 즉 사용자가 볼 수 있는 화면을 뜻함. 모델이 가지고 있는 정..
반복자 패턴(iterator pattern) 객체 지향 프로그래밍에서 반복자(이터레이터)를 사용하여 요소들에 접근하는 디자인 패턴이다. 구글에 이터레이터 패턴에 대해 검색하면 많은 글들이 나오는데 읽어봐도 이해가 잘 되지 않았지만, 네이버 지식백과가 좀 더 쉽게 풀어 설명해주고 있어 내용을 발췌했다. 더보기 반복에 사용되는 자료구조에는 배열, 리스트, Set, Map 등 있다. 이들의 특징은 어떤 데이터의 집합체라는 것이다. 따라서 개별 원소로 여러 가지 작업을 하게 된다. 이때 데이터들의 집합체를 모두 동일한 인터페이스를 사용하여 조작할 수 있게 하면 데이터들의 집합체를 쉽게 사용할 수 있을 것이다. 이 역할을 하는 것이 iterator 패턴이다. 예를 들어 배열의 경우 for 문을 사용하여 변수 i ..
프록시 proxy ? 대리, 대리(행위)나 대리권, 대리 투표, 대리인 등을 뜻한다. 프록시 패턴(proxy pattern) 프록시는 다른 무언가와 이어지는 인터페이스의 역할을 하는 클래스인데, 객체의 속성, 변환 등을 보완하며 보안, 데이터 검증, 캐싱, 로깅에 사용한다고 한다. 또 프록시 객체로 쓰이기도 하지만 프록시 서버로도 활용된다고 한다. 아래 이미지를 보면 Aunty가 Bride 대신 모든 것을 처리해주고있는데 프록시가 이러한 역활을 한다고 보면 조금 쉽게 생각할 수 있는 것 같다.. (그래도 어려움🙄) (출처: https://medium.com/@mithunsasidharan/understanding-the-proxy-design-pattern-5e63fe38052a) 아래 프록시 패턴 예제..
3-1 배열과 리스트 002 - 평균 구하기 입력 1번째 줄에 시험을 본 과목의 개수 n이 주어진다. 해당 값은 1,000보다 작거나 같다. 2번째 줄에 세준이의 현재 성적이 주어진다. 해당 값은 100보다 작거나 같은, 음이 아닌 정수이고, 적어도 1개의 값은 0보다 크다. 출력 1번째 줄에 새로운 평균을 출력한다. 실제 정답과 출력값의 절대 오차 또는 상대 오차가 10의 마이너스 2승..ㅎ 이하이면 정답이다. 예제 입력 1 예제 출력 1 3 40 80 60 75.0 예제 입력 2 예제 출력 2 3 10 20 30 66.666667 내 풀이 n = input() score = list(map(int, input().split())) avg = sum(score) * 100 / max(score) / i..
3-1 배열과 리스트 001 - 숫자의 합 구하기 n개의 숫자가 공백 없이 써 있다. 이 숫자를 모두 합해 출력하는 프로그램을 작성하시오. 입력 1번째 줄에 숫자의 개수 n(1 ≤ n ≤ 100), 2번째 줄에 숫자 n개가 공백 없이 주어진다. 출력 입력으로 주어진 숫자 n개의 합을 출력한다. 예제 입력 1 예제 출력 1 1 1 1 예제 입력 2 예제 입력 2 5 54321 15 예제 입력 3 예제 입력 3 25 7000000000000000000000 7 예제 입력 4 예제입력 4 11 10987654321 46 내 풀이 n = intput() numbers = list(intput()) sum = 0 for i in nubers: sum+=int(i) print(sum)
기본형 매개변수와 참조형 매개변수 기본형 매개변수 기본형 매개변수는 이전에 공부했던 변수타입의 기본형처럼 변수의 실제 값이 저장되고, stack 영역에 저장된다. 예시 int x = 10; char t = "a"; 참조형 매개변수 매개변수이고 참조형 매개변수는 인스턴스의 주소값이 저장되는 매개변수이다. 참조형 매개변수 0X100 같은 메모리의 주소값 따라서 주소를 알고 있기 때문에 해당 값을 변경할 수 있다. 참조형 변수는 기본형 변수와는 다르게 실제 값을 그대로 저장하는 공간이 아니라 Heap영역에 값이 저장된 공간의 주소 값을 저장하는 공간이라는 것이다. 예시 class MyMath { long add(long a, long b) { // a,b는 매개변수 return a + b; } long sub..
옵저버 패턴(observer pattern) 주체(Subject, 관찰자)가 옵저버 또는 리스너(listener)라 불리는 하나 이상의 객체를 관찰 대상이 되는 객체에 등록하여 상태 변화가 있을 때마다 메서드 등을 통해 옵저버 목록에 있는 옵저버들에게 변화를 알려주는 디자인 패턴이다. 발행/구독 모델로 알려져있기도 하다. 이 옵저버 패턴을 활용한 서비스로는 대표적으로 트위터가 있다. 면접을 위한 CS 전공 지식 노트 예제에서는 topic(주체 ≒ 객체)을 기반으로 옵저버 패턴을 구현한 예제가 나와있다. /* 면접을 위한 cs 전공 지식 노트 예제 4. Observer pattern 하나 이상의 객체를 관찰 대상이 되는 객체에 등록하여 상태 변화가 있을 때마다 메서드 등을 통해 옵저버 목록에 있는 옵저버들..
전략 패턴(strategy pattern) ≒ 정책 패턴(policy pattern) 전략이라고 부르는 '캡슐화'한 알고리즘을 선택할 수 있게 하는 소프트웨어 디자인 패턴이다. 면접을 위한 cs 전공 지식 노트 예제에서는 이커머스 사이트에서 결제를 할 때 다양한 방법을 선택할 수 있듯이, 예제에서 제품을 결제 방법의 '전략' (결제수단?)만 바꿔서 LUNACard로 사는 것과 KAKAOCard로 사는 것을 구연한 예시를 보여줬다. /* 면접을 위한 cs 전공 지식 노트 예제 3.전략 패턴(strategy pattern) 객체의 행위를 바꾸고 싶은 경우 '직접'수정하지 않고 '캡슐화한 알고리즘'을 선택할 수 있도록하는 소프트 웨어 디자인 패턴이다. */ import java.text.DecimalForma..
- Total
- Today
- Yesterday
- django
- 한글 형태소 분석기
- 면접을 위한 CS 전공 지식 노트
- 웹페이지
- 검색 결과 내 페이지네이션
- 암호화
- django.contrib.auth
- 혼자 공부하는 파이썬
- Spring
- Java
- 배열
- python3
- django-environ
- path variable
- 환경 변수 설정
- musma
- git
- 디자인 패턴
- 회원가입
- authenticate()
- Python
- 톰캣
- Magazine K
- 회원 로그인
- API
- git 공부
- Django tutorial
- 커맨드 객체
- git공부
- error: failed to push some refs to 'https://github.com/
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |