공부50 [Java] 추상 클래스, 템플릿 메서드 패턴 -final 예약어 추상 클래스는 추상 메서드를 포함한 클래스이다. 추상메서드란? 구현 코드가 없이 선언부만 있는 메서드 abstract 예약어를 사용한다. 추상클래스는 new(인스턴스화)할 수 없다. public class Computer { public void display(){}//추상메서드가 아님 public void typing();//추상메서드임 하지만 이대로는 에러가 발생. } 사용 방법 public abstract class Computer { public abstract void display(); public abstract void typing(); } 추상클래스는 주로 상속의 상위클래스를 위해 사용된다. 하위클래스에서 반드시 구현해야하는 메서드이지만 상위클래스는 그 선언이 모호할때 사용. 하나의 추상.. 2021. 12. 21. [Java] 상속(Inheritance), 메서드 오버라이딩, 다형성, 다운캐스팅, 업캐스팅 상속이란? 새로운 클래스를 정의할 때 이미 구현된 클래스를 상속 받아서 속성이나 기능이 확장되는 클래스를 구현하는 것. 상위클래스는 하위클래스보다 일반적인 개념과 기능을 가진다. 하위클래스는 상위클래스보다 구체적인 개념과 기능을 가진다. 자바는 Single Inheritance만 지원하기 때문에 extends 뒤에는 단 하나의 class 만 사용할 수 있다. class B extends A{ } public class Customer { protected int customerID; protected String customerName; protected String customerGrade; int bonusPoint; double bonusRatio; } public class VIPCustomer .. 2021. 12. 21. [알고리즘] 외판원 문제 (TSP; Traveling Sales-man Problem) 외판원 문제란? 외판원이 n개 도시로 판매출장을 계획하고 있다고 가정하고, 각 도시마다 다른 도시로 이어지는 도로가 연결되어 있다. 출장시간을 최소로 줄이기 위해 외판원이 거주하고 있는 도시에서 출발하여 각 도시를 한번씩 방문하고, 다시 출발한 도시로 돌아오는 가장 짧은 여행길을 찾는 문제이다. 이 문제는 마디(Vertex, node)를 도시로 하여 가중치 포함 그래프로 표현할 수 있다.(가중치는 양의 정수로 가정) 방향 그래프에서 일주여행길은 한 도시에서 출발하여 다른 모든 도시를 한번씩만 들리고 출발한 도시로 돌아오는 여행길이다. (이를 헤밀톤 회로 라고도 한다.) 외판원 문제는 최소한 하나의 일주여행길이 존재하는 경우 가중치 포함 방향그래프에서 최적일주여행길을 찾는 문제이다. 출발도시가 어디 부터인.. 2021. 12. 17. [Java] 싱글톤 패턴 (Singleton Pattern) -static 싱글톤 패턴이란?? 프로젝트안에서 객체를 참조할 수 있는 인스턴스가 오직 1개만 존재해야 하는 경우에 사용되는 패턴입니다. 구현해 보기 company객체는 private인 생성자가 있다. 이 경우 외부에서 생성자를 만들 때 Company cp_instance = new Company(); 호출이 불가능하다. (외부에서 인스턴스 생성이 불가능) 싱글톤 패턴은 인스턴스를 하나만 가지고 있는 디자인 패턴이기 때문에 Company객체 내부에서 instance를 하나 생성하고, 외부에서 호출했을 때 인스턴스를 내보내주는 함수를 갖는다. 이렇게 함수를 사용해서 인스턴스를 가져올 수 있다. 이름이 다른 company1과 company2를 생성한것 같지만, 출력된 결과는 같은 주소값을 갖는다. (같은 인스턴스이다.) .. 2021. 12. 8. [Java] static 변수, static메소드(클래스 메소드), 인스턴스 변수, 인스턴스 메소드 Static 변수(클래스 변수) 여러 인스턴스가 하나의 값을 공유할 필요가 있는 경우 사용된다. static 변수는 처음 프로그램이 로드 될 때 데이터 영역에 생성된다. 인스턴스의 이름과는 상관없이 클래스 이름으로 참조하여 사용하면 된다. 확인해보기 아래와 같은 Student객체가 있을때 serialNum은 static변수입니다. 인스턴스가 생길때 마다. 숫자가 하나씩 늘어날겁니다. 인스턴스 이름과 무관하게 증가하는 변수를 확인할 수 있고, 클래스명으로 호출되는것을 확인할 수 있습니다. (인스턴스 생성과도 무관하게사용 가능) static 메소드는 내부에서 인스턴스 변수를 사용할 수 없다. WHY? 인스턴스가 생성되면 스택 메모리가 인스턴스 주소를 갖고 힙 메모리에 인스턴스 변수가 들어간다. static변.. 2021. 12. 8. [Java] 인스턴스, 힙 메모리, 생성자, 정보 은닉 인스턴스: 클래스로부터 생성된 객체 힙(Heap) 메모리에 멤버 변수의 크기에 따라 메모리가 생성됨. 각각의 인스턴스는 별개의 메모리를 가진다. 자바에서는 garbege Collector가 메모리를 알아서 수거한다. 생성자(Constructor): 객체를 생성할 때 new키워드와 함께 호출됨 인스턴스를 초기화 하는 코드가 구현 됨 반환 값이 없음, 상속되지 않음, 생성자는 클래스 이름과 동일 기본 생성자(default constructor): 하나의 클래스에는 반드시 하나 이상의 생성자가 존재해야함. 만약 구현하지 않는다면 컴파일러가 생성자 코드를 넣어줌 기본 생성자는 매개변수가 없고,구현부가 없음 오버로딩: 같은 이름의 생성자, 메서드의 매개변수가 다른 경우 정보 은닉 (impormation hidin.. 2021. 12. 4. IntelliJ 단축키 익히기 (for mac) 프로젝트 창 포커스: command + 1 포커스 해제: esc 파일 미리보기: space 새파일 생성: 커서 이동 주석처리 자동 들여쓰기(자동 인덴트) 코드 사용처 찾기 최근 파일 열기: command + e Live Template: command + j (자동 완성 기능) psvm sout 퀵픽스: option + enter. (빠른 수정) 이슈별로 이동: F2, shift + F2 import 최적화: ctrl + option + o 터미널창: option + F12 구문 완성: shift + command + enter 파일 내에서 단어 대체하기: command + R 실행: ctrl + r 종료: command + F2 라인 복사 바로 붙여넣기: command + d 게터 세터 자동 완성: 에.. 2021. 12. 2. 2021 정보처리기사 (1회 필기 & 1~3회 실기) 후기 & 시험 공부 방법 전공자보단 비전공자의 공부 방법이 더 도움이 될 수 있겠지만 정보처리기사를 마치며 느낀 소감과 공부했던 방법을 기록하려 합니다. 정보처리기사는 2020년부터 NCS 표준에 맞춰 시험 과목이 필기, 실기 모두 대폭 개편되었습니다. 그 말인 즉? 풀어볼 모의고사가 몇 개 없다...ㅎ 저는 필기는 이기적, 실기는 수제비 교재를 사용했습니다. 📖 필기 시험 준비 2021년 정기기사 1회 필기시험 원서접수가 01.25~01.28일이라 대학교 3학년을 마치고 4학년을 기다리고 있는 겨울방학이라 지원 자격이 되는지 확인해보고 접수했습니다. 공부는 1주일을 목표로 잡았지 투자한 기간은 5일 이내였던 것 같습니다. 소프트웨어 설계/ 소프트웨어 개발/ 데이터베이스 구축/ 프로그래밍언어 활용/ 정보 시스템 구축 관리 5개 .. 2021. 12. 2. [Python] 메소드 (Method)와 함수(Function) 차이점 함수(Function) 특정 목적의 작업을 수행하기 위해 독립적으로 설계된 프로그램 코드의 집합이다. 독립적으로 존재 데이터가 반환될수도 반환되지 않을 수 있습니다. 메소드(Method) 객체(object), 구조체와 연관된 함수이다. 정의된 클래스의 참조에 따라 클래스를 호출해야 사용할 수 있다. 클래스 내에 정의된 함수 ※파이썬에서는 메소드를 호출할 때 해당 메소드의 인스턴스를 첫번째 argument로 사용한다. 반드시 self를 선언해주어야 함. self를 사용하여 인스턴스에 대한 정보를 호출할 수 있다. 2021. 11. 30. [알고리즘] 최소 비용 신장 트리(MST) - 크루스칼 알고리즘(Kruskal Algorithm) 신장 트리 (Spanning Tree) 신장 트리란 그래프안에서 모든 정점(노드)을 포함하는 트리이다. 신장 트리는 모든 정점들이 연결되어 있어야 하고, 사이클을 포함하면 안된다. (사이클: 그래프가 순환되어 돌아오는 경로) 신장 트리는 그래프에 있는 n개의 정점을 n-1개의 간선으로 연결하게 된다. 최소 비용 신장 트리 MST (Minimun Spanning Tree) 신장 트리들 중에서 사용된 간선의 가중치 합이 최소인 트리를 말한다. 크루스칼(Kruskal) 알고리즘과 프림 알고리즘이 있다. 크루스칼 알고리즘(Kruskal Algorithm) 그리디 알고리즘을 이용하여 그래프의 모든 정점을 최소 비용으로 연결하여 최적의 답을 구하는 알고리즘이다. 크루스칼 알고리즘 동작 그래프의 간선들을 가중치의 오.. 2021. 11. 10. [Django] 프레임워크 Django 설치 및 기본, MVC (MTV) 패턴 프레임워크 자주 사용되는 코드를 체계화하여 쉽게 사용할 수 있도록 도와주는 코드 집합이다. 라이브러이와 비슷하지만 규모가 더 크고 프로젝트의 기반이 된다. (구조를 만드는 골조가 프레임워크라면 자재들이 라이브러리) 가상환경 세팅 django 설치 pip install django requirements.txt만들기 (가상환경에 설치된 항목 표시) pip freeze > requirements.txt 프로젝트 생성 Django를 처음 사용하는 경우 초기 설정을 처리해야 합니다. 즉, 데이터베이스 구성, Django 관련 옵션 및 응용 프로그램별 설정을 포함하여 Django 인스턴스에 대한 설정 모음인 Django 프로젝트를 설정하는 일부 코드를 자동 생성해야 합니다 django-admin startproj.. 2021. 11. 7. [SQLite] 파이썬 데이터베이스 연동(2), 테이블 조회, 수정, 삭제 테이블 조회하기 #파이썬 데이터베이스 연동(SQLite) import sqlite3 from sqlite3.dbapi2 import connect conn = sqlite3.connect('/mnt/c/Users/mch12/Documents/python_basic/resource/database.db') #커서 바인딩 c = conn.cursor() #데이터 조회 c.execute("SELECT * FROM users") #커서 위치가 변경 #1개 로우 선택 # print('One -> \n', c.fetchone()) #지정 로우 선택 # print('Three -> \n', c.fetchmany(size=3)) rows = c.fetchall() for row in rows: print('retrie.. 2021. 11. 5. 이전 1 2 3 4 5 다음