Register for your free account! | Forgot your password?

Go Back   elitepvpers > Coders Den > General Coding
You last visited: Today at 16:16

  • Please register to post and access all features, it's quick, easy and FREE!

Advertisement



Coders Chit-Chat

Discussion on Coders Chit-Chat within the General Coding forum part of the Coders Den category.

Reply
 
Old 07/29/2015, 17:24   #106



 
Serraniel's Avatar
 
elite*gold: 0
The Black Market: 205/1/0
Join Date: May 2010
Posts: 6,853
Received Thanks: 5,106
Bei einer abstrakten Klasse hast du die Möglichkeit eine Defaultimplementierung anzubieten. Bei einem Interface sagst du wirklich nur du hast Methode XY mit den Parameter abc von den Typen kij und dem Rückgabe wert v. Zudem kann man bei einem Interface auch keine Attribute angeben, wenn ich mich jetzt nicht Irre.

Weiterer Unterschied ist, dass Klassen nachher mehrere Interfaces implementieren können, aber immer von maximal einer (abstrakten) Klasse erben können.
Serraniel is offline  
Thanks
1 User
Old 07/29/2015, 17:40   #107
 
Logtetsch's Avatar
 
elite*gold: 192
Join Date: May 2009
Posts: 2,227
Received Thanks: 3,262
Das man eine default-Implementierung vornehmen kann, war mir nicht bewusst, aber wäre es dann nicht sinnvoller einfach eine normale Klasse zunehmen, und die Methoden einfach virtuell zu kennzeichnen?

Was würde bei folgendem Szenario passieren? Wie sähe hier die Implementierung aus? Soviel ich weiß, ist eine Methoden-Überladung nur durch unterschiedliche Signaturen, welche den Rückgabetyp nicht berücksichtigt, gültig. Würde es hierbei zu einem Konflikt kommen und ich müsste auf ein Interface (ITest1 / ITest2) verzichten?
Code:
interface ITest1
{
     int foo(int a, int b);
}

interface ITest2
{
     void foo(int a, int b)
}

public sealed class CFoo : ITest1, ITest2
{
      //........
}
Achja, bevor ich es vergesse: Sind alle Methoden, Eigenschaften und Felder automatisch statisch, wenn ich die Klasse mit dem static Modifizierer bestücke?
Logtetsch is offline  
Old 07/29/2015, 18:10   #108



 
Serraniel's Avatar
 
elite*gold: 0
The Black Market: 205/1/0
Join Date: May 2010
Posts: 6,853
Received Thanks: 5,106
Kannst glaube ich eine für beide Implementieren, oder für beide einzeln, indem du den Interfacenamen davor schreibst, da bin ich mir gerade nicht ganz sicher, sollte aber gehen.
Bei einer abstrakten Klassen kannst du auch kein Objekt direkt erzeugen, sondern nur von erbenden Klassen.
Serraniel is offline  
Old 07/30/2015, 10:20   #109
dotCom
 
Devsome's Avatar
 
elite*gold: 9842
The Black Market: 107/0/0
Join Date: Mar 2009
Posts: 16,840
Received Thanks: 4,675
Glaube das das einige noch nicht wussten :>
Devsome is offline  
Thanks
3 Users
Old 07/30/2015, 11:06   #110



 
Serraniel's Avatar
 
elite*gold: 0
The Black Market: 205/1/0
Join Date: May 2010
Posts: 6,853
Received Thanks: 5,106
Danke, find ich gut zu wissen, hat mir zwar noch nie bewusst Probleme gemacht aber damit hat man diverse Optimierungsmöglichkeiten, wenn man das weiß.
Serraniel is offline  
Old 07/30/2015, 12:29   #111
 
Padrio's Avatar
 
elite*gold: 0
Join Date: Jul 2015
Posts: 192
Received Thanks: 67
Wenn wir schon beim Optimieren sind:

PHP Code:
if(isset($string[100])){ echo '$string ist zu lang'; } 
ist schneller als:

PHP Code:
if(strlen($string) > 100){ echo '$string ist zu lang';  } 
So was ist immer ganz interessant zu wissen
Padrio is offline  
Old 07/30/2015, 13:07   #112
dotCom
 
Devsome's Avatar
 
elite*gold: 9842
The Black Market: 107/0/0
Join Date: Mar 2009
Posts: 16,840
Received Thanks: 4,675
Quote:
Originally Posted by Macina View Post
Wenn wir schon beim Optimieren sind:

PHP Code:
if(isset($string[100])){ echo '$string ist zu lang'; } 
ist schneller als:

PHP Code:
if(strlen($string) > 100){ echo '$string ist zu lang';  } 
So was ist immer ganz interessant zu wissen
Ich weiß momentan nicht welche von den abfragen in dem Fall schneller wäre.

PHP Code:
$string "normaler string";

if(
strlen($string) > 10){ echo $string .' =>ist zu lang [1]<br/>';  }  

echo (
strlen($string) > 10) ? $string .' =>ist zu lang [2]<br/>' ''
Devsome is offline  
Old 07/30/2015, 13:36   #113
 
Padrio's Avatar
 
elite*gold: 0
Join Date: Jul 2015
Posts: 192
Received Thanks: 67
Quote:
Originally Posted by Devsome View Post
Ich weiß momentan nicht welche von den abfragen in dem Fall schneller wäre.

PHP Code:
$string "normaler string";

if(
strlen($string) > 10){ echo $string .' =>ist zu lang [1]<br/>';  }  

echo (
strlen($string) > 10) ? $string .' =>ist zu lang [2]<br/>' ''
Ich meine im Sinn zu haben das die inline ifs weniger performant sind.
Vorallem ist eine normale if lesbarer als die inline dinger.
Padrio is offline  
Old 07/30/2015, 14:23   #114
 
elite*gold: 0
Join Date: May 2015
Posts: 700
Received Thanks: 444
Quote:
Originally Posted by Macina View Post
Wenn wir schon beim Optimieren sind:

PHP Code:
if(isset($string[100])){ echo '$string ist zu lang'; } 
ist schneller als:

PHP Code:
if(strlen($string) > 100){ echo '$string ist zu lang';  } 
So was ist immer ganz interessant zu wissen
Ist die zweite Variante wegen der Lesbarkeit nicht trotzdem deutlich besser?
algernong is offline  
Old 07/30/2015, 14:27   #115
 
Padrio's Avatar
 
elite*gold: 0
Join Date: Jul 2015
Posts: 192
Received Thanks: 67
Quote:
Originally Posted by algernong View Post
Ist die zweite Variante wegen der Lesbarkeit nicht trotzdem deutlich besser?
Das stimmt, aber mit einem kleinem Kommentar (falls die meisten Programmierer so was überhaupt machen o,o) löst sich das ganze ja von selbst.
Padrio is offline  
Old 07/30/2015, 14:48   #116


 
MrSm!th's Avatar
 
elite*gold: 7110
Join Date: Jun 2009
Posts: 28,902
Received Thanks: 25,407
Das ist premature optimization. Nimm das was lesbarer ist.
Quote:
Originally Posted by Logtetsch View Post
Das man eine default-Implementierung vornehmen kann, war mir nicht bewusst, aber wäre es dann nicht sinnvoller einfach eine normale Klasse zunehmen, und die Methoden einfach virtuell zu kennzeichnen?

Was würde bei folgendem Szenario passieren? Wie sähe hier die Implementierung aus? Soviel ich weiß, ist eine Methoden-Überladung nur durch unterschiedliche Signaturen, welche den Rückgabetyp nicht berücksichtigt, gültig. Würde es hierbei zu einem Konflikt kommen und ich müsste auf ein Interface (ITest1 / ITest2) verzichten?
Code:
interface ITest1
{
     int foo(int a, int b);
}

interface ITest2
{
     void foo(int a, int b)
}

public sealed class CFoo : ITest1, ITest2
{
      //........
}
Achja, bevor ich es vergesse: Sind alle Methoden, Eigenschaften und Felder automatisch statisch, wenn ich die Klasse mit dem static Modifizierer bestücke?
Wenn mehrere Interfaces die gleichen Methoden haben, ist das kein Problem. Es ist letztendlich nur ein Vertrag, der besagt, dass diese Methode vorhanden sein muss (Interfaces zu implementieren ist nicht dasselbe wie von einer abstrakten Klasse zu erben!). Wenn zwei Verträge die Methode fordern, erfüllst du trotzdem beide, auch wenn du die Methode nur einmal hast.
Bei Mehrfachvererbung wäre das nicht so einfach, aber die unterstützt C# ja nicht.

Wenn es übrigens keinen Grund für eine abstrakte Klasse oder überhaupt Vererbung gibt, ist ein Interface vorzuziehen. Kompositionen sind flexibler als Vererbung.
sealed solltest du übrigens ebenfalls nur verwenden, wenn du auch einen guten Grund dazu hast.

Nein,statische Klassen machen nicht automatisch alles statisch. Du musst die Sachen selbst als statisch deklarieren.

p.s.
Optimal, wenn du dir solche Fragen stellst wie "Was ist wenn". Probieren geht über Studieren.
MrSm!th is offline  
Thanks
1 User
Old 07/30/2015, 15:12   #117
dotCom
 
Devsome's Avatar
 
elite*gold: 9842
The Black Market: 107/0/0
Join Date: Mar 2009
Posts: 16,840
Received Thanks: 4,675
Devsome is offline  
Old 07/31/2015, 09:24   #118
 
XxharCs's Avatar
 
elite*gold: 34
Join Date: Apr 2011
Posts: 1,475
Received Thanks: 1,228
Quote:
Originally Posted by Devsome View Post
Ich trage ne Brille, aber ich kann C#
Der Witz ist aber schon älter hehe^^

Edit:
XxharCs is offline  
Old 08/01/2015, 12:56   #119

 
Moneypulation's Avatar
 
elite*gold: 138
Join Date: Apr 2012
Posts: 3,494
Received Thanks: 1,769
Würde mich gerne für mein Informatikstudium vorbereiten. WS fängt erst in 2 Monaten an. Was würdet ihr vorschlagen? Programmiergrundkenntnisse kenne ich natürlich schon. Java und C# kann ich teilweise. Sollte ich eine der beiden, ich sag mal auf einem profi level können?
Moneypulation is offline  
Old 08/01/2015, 13:11   #120
 
elite*gold: 0
Join Date: Feb 2009
Posts: 1,137
Received Thanks: 573
Quote:
Originally Posted by Moneypulation View Post
Würde mich gerne für mein Informatikstudium vorbereiten. WS fängt erst in 2 Monaten an. Was würdet ihr vorschlagen? Programmiergrundkenntnisse kenne ich natürlich schon. Java und C# kann ich teilweise. Sollte ich eine der beiden, ich sag mal auf einem profi level können?
Im Studium gibt es genug Leute die selbst nicht oder kaum programmieren können (bei mir waren es etwa 1/3 aller Info Studenten) Programmieren zu können ist hilfreich, aber auf "profi level" musst du es auf keinen Fall können. Und letztlich so viel Programmieren kommt auch nicht dran, eigentlich musst du nur Pseudocode lesen können (außer in modulen wie Programmierung etc). Ich würde eher wenn die Uni so etwas anbietet eine Mathe Vorkurs besuchen, und generell deine Mathekentnisse aufbereiten.
warfley is offline  
Thanks
1 User
Reply


Similar Threads Similar Threads
CO 2 Chit-Chat
04/04/2013 - Conquer Online 2 - 3 Replies
Hello, You are allowed to talk in this thread about all things belonging to CO2. It does not matter whether you want to ask something or you just want to talk about CO2. Posts like "lol" are forbidden!



All times are GMT +1. The time now is 16:18.


Powered by vBulletin®
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
SEO by vBSEO ©2011, Crawlability, Inc.
This site is protected by reCAPTCHA and the Google Privacy Policy and Terms of Service apply.

Support | Contact Us | FAQ | Advertising | Privacy Policy | Terms of Service | Abuse
Copyright ©2025 elitepvpers All Rights Reserved.