본문 바로가기

반응형

코딩 이야기

(100)
[안드로이드&코틀린 공부] 디자인패턴 (싱글톤, 어댑터, 옵저버) 디자인 패턴이란? 디자인 패턴은 객체 지향 프로그래밍에서 코딩을 할 때 발생하는 문제들을 깔끔하게 코딩하기 위한 방안들입니다. 주로 자주 발생하는 문제들을 해결하기 위한 것들로 개발자들에게 있어서 공부하면 코드를 효율적으로 설계할 수 있는 스킬입니다. 싱글톤 패턴 싱글톤 패턴이란? 싱글톤 패턴은 아무리 많은 객체를 생성해도, 단 하나의 인스턴스만을 생성한 것과 같은 디자인 패턴입니다. 원래 같으면 여러 개의 객체를 생성하면 각각의 객체가 가진 변수는 값을 공유하지 않지만, 싱글톤 패턴은 여러 개의 객체에서 같은 필드를 공유합니다. 객체를 생성할 때 생성자가 호출되고 메모리에 올라가는 등 비용이 발생하게 됩니다. 만약 객체를 생성하는 비용이 크다고 한다면, 객체를 자주 생성하는 일은 시스템에 큰 부담입니다..
[안드로이드&코틀린 공부] Context, Context wrapper Context 전 주제만 봤을때 content와 이름이 비슷한 나머지 역할도 비슷한가? 착각을 했지만 아니였습니다. content와 context는 완전히 다릅니다. 안드로이드 Context, 컨텍스트는 이름 그대로 맥락을 뜻합니다 컨텍스트는 어플리케이션의 현재 상태, 환경에 대한 글로벌한 정보를 지니고 있는 추상클래스입니다. 컨텍스트는 시스템의 핸들과도 같습니다. 리소스, 데이터베이스, preferences 등에 대한 접근을 제공한다고 합니다. 따라서 어플리케이션에 대한 정보가 필요할 때는 컨텍스트를 사용하면 됩니다. 그래서 인자로 컨텍스트를 요청하는 함수들이 많습니다. 잘못 사용하면 앱이 비정상으로 종료되거나 메모리 누수가 발생할 수 있습니다. 컨텍스트에는 크게 어플리케이션 컨텍스트와 액티비티 컨텍스..
[안드로이드&코틀린 공부] Activity, Fragment, AAC ViewModel, Lifecycle Activity 안드로이드 앱은 핵심적으로 액티비티, 서비스, 브로드캐스트 수신자, 내용 제공자 이 4가지로 이루어져 있습니다. 액티비티는 안드로이드의 핵심이 되는 4대 컴포넌트 중 하나입니다. 액티비티는 사용자에게 UI를 제공하여 어플리케이션과 상호작용하는 단일 화면을 의미합니다. Oncreate 함수는 액티비티를 생성할 때 필수적으로 구현해야합니다. 이 함수의 범위 안에서 setContentView를 이용해서 레이아웃 리소스를 정의하고, findViewById를 사용하여 위젯들과 상호작용하도록 할 수 있습니다. override fun onCreate(savedInstanceState: Bundle?) { super.onCreate(savedInstanceState) setContentView(R.la..
[안드로이드&코틀린 공부] Extension, Enum, Data class (코틀린 공식 도큐먼트 참고하여 작성하였습니다.) Extension 코틀린은 클래스나 인터페이스를 상속받거나 데코레이터와 같은 디자인 패턴을 사용하지 않고 새로운 기능을 추가하는 능력을 제공한다고 합니다. 이는 서드파티 라이브러리의 클래스에 새로운 함수를 작성할 수 있으며, 이를 원래 그 안에 선언되어있던 함수처럼 사용할 수 있습니다. class a{ fun saymyname(){ println("I am 우식이에요") } } fun a.nexttime(){ println("next time 같이 체스 두실 분 구해요") } fun main(){ var A = a() A.saymyname() A.nexttime() } class a 에는 saymyname 이라는 함수 밖에 없지만 extension을 통해..
[안드로이드&코틀린 공부] Nullable, Nonnull, Kotlin scope function Nullable & Non-null 자바에서는 Null 값을 갖고 있는 객체/변수를 호출할 때 NullPointerException이라는 에러가 발생합니다. 코틀린에서는 Nullable과 Non-null로 변수를 선언할 수 있습니다. 기본적으로 모든 변수는 기본적으로 Non-null입니다. 즉 그냥 선언한 변수는 null을 담으면 에러가 발생합니다. 하지만 Nullable을 이용하면 변수에 null을 담을 수 있게 됩니다. var nullable: String? = null 이를 통해 사후에 NullPointerException이 발생하는 걸을 미리 방지하는 역할을 할 수 있습니다. 변수를 Nullable로 선언하는 방법은 타입뒤에 ‘?’를 붙이면 됩니다. 이렇게 코틀린에는 Null을 처리해 에러의 빈도..
[안드로이드&코틀린 공부] 상속, 추상클래스, 인터페이스 상속 기본 개념 상속은 이름 그대로 자식 클래스가 부모 클래스의 필드와 함수를 그대로 가져오는 개념입니다. 필드와 함수를 물려주는 쪽이 부모 클래스가 되고, 받는 쪽이 자식 클래스가 됩니다. 상속받는 필드와 함수는 접근 제한자의 영향을 받습니다. 즉 public, protected, private를 통해 접근을 제한하여 사용하는 것이 가능합니다. 상속받는 필드와 함수는 자식 클래스 내에서 재정의할 수 있습니다. 이를 오버라이딩이라고 부릅니다. 이를 이용하여 같은 부모 클래스의 함수를 물려받더라도 자식 클래스 내에서 오버라이딩한다면 같은 함수도 자식 클래스마다 다르게 사용할 수 있습니다. 장점 코드 재사용과 유지보수가 용이합니다. class BreadMaker{ private String Bread = "..
선형대수 선형방정식, 첨가 행렬, 기본행연산, 가우스행렬, 가우스 조르단 소거법 정리 서론 필자가 선형대수 관련 서적을 뒷부분부터 정리하기 시작했음으로 이보다 더 선행되는 개념들은 추후에 다루도록 한다. 요새 기술 블로그에 너무 손을 놔버려서 2학기 스터디에서 정리도 할겸 시작하게 되었다. 선형 방정식 방정식이란 변수가 포함된 식에서 해당 변수가 특정 값을 가질때만 성립되는 등식이다. 우리가 보통 학교 교육과정 내에서 선형 방정식을 떠올리게 되면 y = 2x + 1 이런 식을 떠올리게 된다. 보통 2개의 변수인데 x의 차수가 높아봤자 x^4 이거나 하다. 허나 선형방정식에서는 여러 개의 변수를 가질 수 있다. 3X + 2Y + 7Z = 32 (X,Y,Z는 모두 변수이다.) 이런 형태를 가질 수 있다. 물론 이처럼 변수가 3개 이상으로 늘어나면 우리가 평소에 접하면 이차평면이 아닌 그 이상..
백준 23858번: 중앙값 제거 C++코드(수학, 구현) //23758 #include #include #include using namespace std; int arr[2000002]; int main() { ios_base::sync_with_stdio(false); cin.tie(NULL); int n; cin >> n; for(int i=0; i> arr[i]; } sort(arr, arr+n); int result = 0; for(int i=0; i

반응형